确定OutOfMemory错误的点

时间:2012-04-28 16:44:20

标签: java memory-management

在Java中,是否可以准确找到java.lang.OutOfMemoryError发生的点?

我希望更好地了解我的应用程序在失败之前已经确认了多少内存

1 个答案:

答案 0 :(得分:2)

您可以捕获OutOfMemoryError并询问运行时,如下所示。

try {
    //...
} catch (OutOfMemoryError er) {
    // this will tell you how much you have used
    long heapSize = Runtime.getRuntime().totalMemory();
    System.err.println("memory used "+heapSize);
}

(当堆耗尽内存时应该发生OutOfMemoryError)

如果您不知道代码中的哪个位置会失败,您可以尝试注册一个关闭钩子并在那里输出heapSize。