我得到了这个StackOverFlow错误,我完全理解,但问题是我不是在处理大数据,那么这个错误是怎么产生的呢?
我有一个活动,框架布局,一个片段,3个选项。
在片段中,当你点击其中一个选项时,它会重新创建片段并放入随机数,最大值是15
,所以它没那么大,当用户快速点击导致溢出的选项时会发生此错误。
这是生成代码,关于“增强”它有什么想法吗?我不知道这段代码是否是一种不好的记忆使用方法。
private static List<Integer> SavedNumbers;
public static void SetupSavedNumbersLIst(){
SavedNumbers = new ArrayList<>();
}
static List<Integer> range;
private static void AddDiff(int mMAX){
range = new ArrayList<>();
for(int i = 0 ; i < mMAX ; i++){
range.add(i);
}
range.removeAll(SavedNumbers);
}
private static int ReturnIfDuplic(int mMAX){
AddDiff(mMAX);
return new Random().nextInt(range.size());
}
public static int ReturnUniqueSavedNumber(int mMAX){
int Random = ReturnRandom(mMAX);
if(SavedNumbers != null && SavedNumbers.size() > 0) {
if(DoesSavedNumberExist(Random)){
return ReturnIfDuplic(mMAX);
} else {
SavedNumbers.add(Random);
return Random;
}
} else if (SavedNumbers != null && SavedNumbers.size() == 0){
SavedNumbers.add(Random);
return Random;
} else if( SavedNumbers == null){
SetupSavedNumbersLIst();
return ReturnUniqueSavedNumber(mMAX);
} else {
return 1;
}
}
private static boolean DoesSavedNumberExist(int Number){
for(int s: SavedNumbers){
if(Number == s)
return true;
}
return false;
}
private static int ReturnRandom(int mMAX){
return new Random().nextInt(mMAX);
}
当我试图使用intent传递许多值时,我也遇到了同样的问题。putExtra()
。
我通过将所有数据保存在共享首选项中解决了这个问题。然后,您可以在后面的部分中访问应用程序中所需的任何片段或活动。
参考此问题了解有关使用共享首选项保存数据的更多信息。
我遇到了同样的问题,堆栈大小为8MB。当我点击add item api时,也出现了同样的错误。我以为这是在从编辑文本中获取值时发生的。这样我就可以改变我的方式,在我的inIT()中获取值
服务呼叫前
inIT()
sys = input_Systolic.getText().toString();
dys = input_Diastolic.getText().toString();
_date = dateView.getText().toString();
tim = time.getText().toString();
改装电话
HashMap<String, Object> pMap = new HashMap<>();
pMap.put("user_id",loginStatusModal.getUser_id());
pMap.put("relative_id",rel_id);
pMap.put("systolic",sys);
pMap.put("diastolic",dys);
pMap.put("report_date",_date);
pMap.put("report_time",tim);
通过使用它,我解决了堆栈大小8mb的错误。
如果您碰巧随机选择了已保存的同一个数字,则该行将递归:
if(DoesSavedNumberExist(Random)){
return ReturnUniqueSavedNumber(mMAX);
}
如果已经保存了1-15,并且最大值为15,这将保证堆栈溢出,因为它永远不会满足If语句。这通常也是一种糟糕的“随机数不好,再试一次”方法,因为当你添加越来越多的数字时,你会添加越来越多的递归。一个更好的方法可能是将随机数用作剩下来选择的可能数的索引。
问题内容: 我正在使用Direct Web Remoting(DWR)JavaScript库文件,并且仅在Safari(台式机和iPad)中出现错误 它说 超出最大呼叫堆栈大小。 该错误的确切含义是什么,它会完全停止处理吗? 也适用于浏览器的所有修复程序(实际上在上, JS:执行超出超时 我假设是相同的调用堆栈问题) 问题答案: 这意味着在代码的某处,你正在调用一个函数,该函数又调用另一个函数,依
问题内容: 我使用ASM库生成字节码,方法的“最大堆栈大小”将自动计算。在运行期间,我发现此值(最大堆栈大小)不正确。 我的源代码是: 上面的代码将生成字节码: 字节码报告错误: 因为构造方法:stack = 0,locals = 4,args_size = 4 正确的堆栈大小为2。 即使设置了ClassWriter(COMPUTE_MAX+COMPUTE_STACK),仍有另一个线程ASM(来自
问题内容: 我正在运行一个用Java在Eclipse中编写的程序。对于很大的输入,该程序具有很深的递归级别。对于较小的输入,程序运行正常,但是在给出较大的输入时,出现以下错误: 可以通过增加Java堆栈大小来解决此问题,如果可以,那么如何在Eclipse中做到这一点? 更新: @乔恩·斯基特 该代码递归地遍历解析树以建立数据结构。因此,例如,代码将使用解析树中的一个节点来做一些工作,并在该节点的两
索引.js Questionlist.jsx 问题.jsx Scorebox.jsx 结果. jsx
我刚刚开始使用角度2。所以我尝试使用Web服务从数据库显示类别。 这是我的论坛.服务.ts文件 forum.component.ts: forum.component.html: 请帮忙,先谢了
问题内容: 下面给出的代码显示了运行时的Stackoverflow错误。但是,如果我使另一个类CarChange创建Car的对象,它将成功运行。我是一个初学者,请执行以下代码以了解在Java中进行向上转换的重要性。 问题答案: 一个stackoverflow通常意味着您有一个无限循环。 收到此消息的原因是因为您从testdrive方法调用驱动器,并且在该方法中再次调用drive。