java - JVM 在内存不足错误期间的行为?列表 s = new ArrayList<String>();

标签 java

try {
    for(;;) {
        s.add("Pradeep");
    }
} finally {
    System.out.println("In Finally");
}

在try block 中jvm内存不足,那么jvm在没有内存的情况下如何执行finally block ?

输出:

In Finally
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space

最佳答案

大概 System.out.println 调用比 s.add("Pradeep") 调用需要更少的内存。

例如,如果 s 是一个 ArrayList,则 s.add 调用可能会导致列表尝试将其容量加倍。这可能是一个非常需要内存的操作,因此即使 JVM 无法执行这种相对昂贵的任务,它仍可以继续执行也就不足为奇了。

关于java - JVM 在内存不足错误期间的行为?列表 s = new ArrayList<String>();,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7753443/

相关文章:

java - Spring Integration 入站 JMS 与 JBoss createConnection() : IllegalArgumentException: ClassCastException

java - 为什么我收到 NullPointerException

java - 如何在json post请求中发送字节数组?

java - 如何使用 GET REST API 调用传递 ssl 证书

java - jackson writeValueAsString : valid JSON not valid anymore

Java CQL驱动程序查询时间戳时出现无效查询异常

java - 在 jfreechart 中缩小后恢复手动域轴范围

java - 如何在 jmockit 中模拟创建

java - Windows 上的 Spark - "The system cannot find the path specified."

java - Amdatu 多部分表单 @FormParam 始终为 null