gpt4 book ai didi

java - 从 java.lang.OutOfMemoryError 中恢复

转载 作者:搜寻专家 更新时间:2023-10-31 08:32:07 25 4
gpt4 key购买 nike

所以今天在学习Java的过程中,终于遇到了这个特殊的错误。似乎这个错误非常普遍,试图从中恢复已经引起了不同的 react 。有人认为it is useful in certain scenarios所以这是一个很好的“知道”,some have used it in their projects , 而其他人 vehemently oppose the idea捕获此错误然后是很多others are just as confused as me .

编辑: 顺便说一句,这是我遇到的错误。我希望捕捉这些错误,并在下次将 incrementor 的值减少 1/10,直到发现另一个错误
(依此类推......直到我找到上限) This is the error I've encountered

由于我正在学习 Java,找不到关于这个主题的任何具体内容,所以我想就这个特定示例寻求您的帮助:

public class SpeedDemoClass {
static int iterations=0;
static int incrementor=10000000;
public static void main(String[] args) {
while(incrementor>1){
try{
iterations=iterations+incrementor;
iterator(iterations);
}
catch(Exception e){
System.out.println("So this is the limiting error: "+e);
iterations=iterations-incrementor;
incrementor=incrementor/10;
iterations=iterations+incrementor;
}
}
System.out.println("The upper limit of iterations is: "+iterations);
}

public static void iterator(int a){
long start_time= System.currentTimeMillis();
StringBuilder sbuild= new StringBuilder("JAVA");
for(int i=0;i<a;i++){
sbuild.append("JAVA");
}
System.out.println("Performing "+a+" append operations;"
+"process completed in :"
+(System.currentTimeMillis()-start_time)+"ms");
}
}

你试过编译它吗?

Ofcourse, it does not work

这是我正在尝试做的事情的简短描述!

我正在尝试执行以下操作:

  1. 初始化incrementor=10000000和iterations=0并将incrementor=incrementor+iterations的结果传递给iterator().
  2. 如果出现错误,程序应该捕获它,然后将iterations* 减少**增量,然后将增量 除以 10,然后重试
  3. 重复步骤 1 到 2,直到它开始起作用。
  4. 目标是找到产生错误的iterations值,并在每次迭代后保持低于该水平,直到找到iterations值的上限
    (即当 incrementor 变为 0 时)

With my own manual tests, I have found out the value of this to be 92,274,686. That's the magic number. I don't know why it is so, and whether or not it is that value for my own computer only. It would be awesome if someone could post a modified code that could spit out this result.

最佳答案

您捕获了 Exception,但是 OutOfMemoryError 是一个 Error。请注意,ErrorException 是 Java 中的两个不同类!不过,两者都实现了 Throwable

catch 子句限制了要捕获的 Throwable 类的类型。由于 Error 不是 Exception,您的代码不会捕获 OutOfMemoryError

关于java - 从 java.lang.OutOfMemoryError 中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39208290/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com