tomcat 没有在内存不足错误时生成 hprof 文件

Posted

技术标签:

【中文标题】tomcat 没有在内存不足错误时生成 hprof 文件【英文标题】:tomcat not generating hprof file on outofmemory error 【发布时间】:2014-07-31 22:07:18 【问题描述】:

我在 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 文件。我在这里缺少一些设置吗?

【问题讨论】:

不应该是-XX:+HeapDumpOnOutOfMemoryError吗? 【参考方案1】:

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

正如here所说:

-XX:HeapDumpOnOutOfMemoryError 选项这个选项告诉Java 当从 Java 分配时,HotSpot VM 生成堆转储 堆或永久代不能满足。没有 使用此选项运行的开销,因此它可以用于 OutOfMemoryError 异常需要很长时间的生产系统 时间浮出水面。

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

【讨论】:

引用的来源是什么? 资源来自这里:docs.oracle.com/javase/8/docs/technotes/guides/troubleshoot/…

以上是关于tomcat 没有在内存不足错误时生成 hprof 文件的主要内容,如果未能解决你的问题,请参考以下文章

hprof 文件查看

内存不足异常 + 分析 hprof 文件转储

eclipse java MemoryAnalyzer 查询内存泄漏 环境配置

Tomcat 8.5.15对ubuntu 16内存不足的错误

捕获 tomcat 转储时出现“内存不足或附加权限不足”

Tomcat内存不足