0

我正在使用 IBM jdk 1.7(以支持 TLS 密码)用于使用嵌入式 tomcat 部署的基于 struts 的应用程序。我们正在运行内存泄漏 (OOM),它产生了近 30 个转储。这已成为一个循环事件。我们尝试通过在 wrapper.conf 中包含 wrapper.java.additional.1="-XX:MaxPermSize=256m -Xss2048k" 来增加堆内存。但这并没有太大帮助。

4

1 回答 1

0

尝试使用 Memory Analyzer,您可以按照此处的说明下载并安装它: https ://www.ibm.com/developerworks/java/jdk/tools/memoryanalyzer/

它应该提供您的堆使用情况的概述。我建议从支配树视图开始,看看哪些对象负责在堆上保持数据活动。您还可以运行各种报告来为您分析堆。

您应该有核心文件 (.dmp) 和堆转储 (.phd),核心文件会很大,但访问速度可能更快,并且还会包含对象和字符串中基本类型的所有值。phd 文件只包含对象大小和它们之间的连接。如果您从核心文件开始,将您看到的内容与您的代码联系起来可能会更容易。

于 2016-03-02T10:12:11.463 回答