当前位置: 首页 > 知识库问答 >
问题:

试图理解Java内存不足错误并捕获可抛出的

丌官开宇
2023-03-14

最近我被要求在我的代码中捕获可抛出的内容。所以我们遇到了一个争论,我们是否应该这样做,我给出了一个OutOfMemoryError的例子,在这种情况下,即使我们捕获到错误,我们的代码也不会被进一步处理。

所以为了测试这个理论,我们为它创建了示例代码。

public class TestErrorInThread {

public static void test() {
    System.out.println("Running the test at time " + new Date());
    try {
        System.out.println("Inside try block");
        Integer[] array = new Integer[10000000 * 10000000];
    } catch (Throwable e) {
        System.out.println("Inside catch block");
        System.out.println(e);
    }
    int arr[] = new int[100];
    System.out.println("Programme is still running...");

}

public static void main(String[] args) {
    ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
    Runnable runnable = TestErrorInThread::test;
    scheduledExecutorService.scheduleAtFixedRate(runnable, 0, 5, TimeUnit.SECONDS);
}}
java -Xmx1m TestErrorInThread

在Wed Jun 16 14:20:41 IST 2021时间运行测试
try Block内部
catch Block内部
Java.lang.OutOfMemoryError:Java堆空间
程序仍在运行...

在Wed Jun 16 14:20:46 IST 2021时间运行测试
try Block内部
catch Block内部
Java.lang.OutOfMemoryError:Java堆空间
程序仍在运行...

在Wed Jun 16 14:20:51 IST 2021时间运行测试
try Block内部
catch Block内部
Java.lang.OutOfMemoryError:Java堆空间
程序仍在运行...

为什么这个程序还能继续运行,甚至出现内存不足的错误。

共有1个答案

翟聪
2023-03-14

程序只占用了堆内存中的内存,无法向其添加任何新的内容。当您在它周围执行try语句时,jvm知道何时发生错误以返回开始状态。然后使用catch语句继续编程。

 类似资料:
  • 问题内容: 在运行时,我试图将图像放置在表面视图中。当我尝试使用Drawable文件夹中的图像时,出现内存不足错误。在中快速搜索之后,我发现,如果我们从资产文件夹访问图像,将会有所缓解。但仍然在运行时出现内存不足错误。 我已经分析发现,扩展将有助于解决此类与内存相​​关的问题。问题是我的图像尺寸为1280 x 720,设备尺寸也相同。因此,我觉得缩放不会有任何效果。 由于我们在该社区中拥有专家,如

  • 出于某种原因,这段代码给了我一个无法捕捉的异常错误。catch块似乎没有捕捉到错误。try catch块的作用范围是否如此,以至于我不能在嵌套函数中抛出一个错误,然后期望它被一个作用范围更高的catch语句捕获?我正在使用的应用程序中的一些敏感数据已经被删除,但它预期leadInfo[ 0 / 1]将是一个32个字符的字母数字字符串,我从URL参数中提取。 这里的根本问题是我的AJAX调用从API

  • 问题内容: 在我的Android项目中,我有imageButton,单击它之后,它必须使用imageView打开新的Activity,在我的新Activity中,我必须只能看到ImageButton的大字体图像,图像大小为17mb,并且内存不足错误。但是我的代码适用于较小尺寸的图像。有人可以帮助调整图像大小或更改某些位图选项或以其他方式提出建议吗?我是android的新手,对不起,英语不好:) 这

  • (所以我不会“finish();”一个应用程序。我会在用户交互之后用“startactivity(..);”开始下一个活动。) 所以在这三个活动中有一个循环。在每次活动中,我都会显示3-9张图片,这些图片位于SD卡上,我用以下功能加载SD卡: 这都管用。但有时(在循环几次我的活动之后),我的应用程序崩溃了…

  • 问题内容: 我正在使用位图。它抛出内存不足错误(5次中的2次)。如何避免。 以下是我的代码 : 问题答案: 你得到的OutOfMemoryError因为你没有 那些你用 尝试那些你使用它们后

  • 问题内容: 我是Netbeans中这种错误的新手。我一直在使用Java Bean 8.0.2在Java J2SE中工作。我正在对字符串进行模糊搜索,通常字符串长度为300-500。我正在使用Levenshtein和Jaro Winkler算法来查找字符串之间的距离。大约有1500次迭代来查找字符串之间的距离!问题是我的Net Bean通常会为以下内容提供错误: 我已经在线进行了一些搜索来摆脱此错误