如何使用Eclipse内存分析器工具从正在运行的进程中转储堆



我创建了一个简单的控制台应用程序,从Eclipse运行(右键单击文件并选择以Java应用程序运行)。我在那里睡了一个觉,这样我就可以确保在启动Aquire堆转储对话框时进程仍在运行。我启动对话框,点击刷新,没有列出本地进程。

我查看了Eclipse的错误日志,它只报告它在列出IBM VM进程时出现问题(HPROF进程已配置并且运行良好。)

我做错了什么?

为什么不从程序代码中创建堆转储?

https://blogs.oracle.com/sundararajan/entry/programmatically_dumping_heap_from_java

或者当遇到安全问题时:从应用程序内创建堆转储,无需HotSpotDiagnosticMXBean

在我的JUnit测试中,我用它在固定次数的迭代后进行堆转储,剩下要做的就是打开Eclipse MAT中的转储并找到内存泄漏的原因:-(

我遇到了同样的问题,在谷歌上搜索后我找到了这个解决方案。

在"获取头转储"->"配置…"->选择"HPROF jmap Dump provider"->"-jdkhome"->指定jdk路径默认情况下应为"C:\Program Files\Java\jdk1.8.0_102"或您的jdk位置。

我希望它对你有用。

最新更新