【发布时间】:2010-06-28 21:06:14
【问题描述】:
我正在尝试诊断 Sun One 9.1 应用服务器中的 PermGen 内存泄漏问题。为此,我需要获取 JVM 进程的堆转储。不幸的是,JVM 进程是在 Windows 上运行的 1.5 版。显然,触发堆转储的方法都不支持该设置。我可以让 JVM 在内存不足或关闭后进行堆转储,但我需要能够在任意时间获得堆转储。
获取堆转储的两种常用方法是使用 jmap 或使用 HotSpotDiagnostic MBean。这些都不支持 Windows 上的 jvm 1.5。
有没有我错过的方法?如果有办法以编程方式触发堆转储(不使用 HotSpotDiagnostic MBean),那也可以......
如果在 Windows 中确实无法做到,我想我不得不求助于构建 Linux VM 并在那里进行调试。
谢谢。
【问题讨论】:
-
我使用了 -XX:+HeapDumpOnOutOfMemoryError 和一个试图分配非常大数组的 jsp 页面。当我需要内存转储时,我可以直接点击 jsp 页面。效果很好。