1

我在 tomcat 中部署的 Web 应用程序中存在一些内存泄漏问题。为了找到根本原因,我通过设置启用了 HeapDumpOnOutOfMemory 错误:

-XX:-HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/usr/local/tomcat/logs

和tomcat中的内存设置是:

-Xms256m -Xmx768m -XX:PermSize=128m -XX:MaxPermSize=256m

当内存不足问题发生时,我看到

java.lang.OutOfMemoryError:Java 堆空间

在 tomcat 日志文件上,但没有生成 .hprof 文件。我在这里缺少一些设置吗?

4

1 回答 1

1

正如@beny23 所写,您应该使用-XX:+HeapDumpOnOutOfMemoryError

正如这里所说:

-XX:HeapDumpOnOutOfMemoryError 选项 此选项告诉 Java HotSpot VM 在无法满足来自 Java 堆或永久代的分配时生成堆转储。使用此选项运行没有开销,因此它对于 OutOfMemoryError 异常需要很长时间才能浮出水面的生产系统非常有用。

还要检查您的 Java 版本,因为此选项是在 1.4.2 更新 12、5.0 更新 7中引入的。

于 2014-07-31T22:39:26.010 回答