在Java中,是否可以准确找到java.lang.OutOfMemoryError
发生的点?
我希望更好地了解我的应用程序在失败之前已经确认了多少内存
答案 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。