我一直认为OutOfMemoryError重新启动JVM。
但是我看到一个OutOfMemoryError发生的行为,这没有从代码中捕获(实际上我什至不知道这是否可能)
并且JVM继续(尽管会生成核心转储)。
谁能帮助我了解这种行为?

最佳答案

OutOfMemoryError向一个线程报告其内存分配失败。

int count = 0;
long start = System.currentTimeMillis();
for (int i = 0; i < 10000000; i++) {
    try {
        long[] longs = new long[Integer.MAX_VALUE];
    } catch (OutOfMemoryError e) {
        count++;
    }
}
long time = System.currentTimeMillis() - start;
System.out.printf("Got %,d OutOfMemoryErrors in %.1f seconds%n", count, time/1e3);


版画

Got 10,000,000 OutOfMemoryErrors in 3.9 seconds

关于java - Java中的OutOfMemoryError行为,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11774399/

10-11 19:01