2

我使用以下命令使用 hprof 创建了一个堆转储文件:

java -agentlib:hprof -cp "..\..\jars\trove.jar;.\bin" com.mysite.MyApp

这成功创建了大约 5MB 的文件“java.hprof.txt”。然后我打开 jvisualvm 来查看这个文件,并把它加载进去。但 visualvm 似乎卡在加载屏幕上。下面的屏幕已经启动了大约 10 分钟。

我错过了一步吗?我应该在 hprof 的命令行上使用不同的选项吗?如何读取此堆转储文件?

视觉虚拟机截图

4

2 回答 2

2

VisualVM 支持二进制 HPROF 格式的堆转储。使用 VisualVM 创建堆转储更容易。如果这不可能使用 VisualVM,您可以使用jmap -dump:live,format=b,file=heap.bin <pid>. 优点是您不需要任何特殊的启动参数,并且不会因 hprof 代理库而导致减速。

于 2013-05-10T10:57:48.743 回答
0

就我而言,我通过更改 heapdump 文件的文件权限解决了这个问题。结果 VisualVM 试图加载文件但权限被拒绝(这很奇怪,因为 VisualVM 是创建转储文件的那个),但是 VisualVM 不会给你错误消息。我已经下载了 eclipse 内存分析器(https://www.eclipse.org/mat/downloads.php)。它给了我一条错误消息。

于 2016-02-03T20:49:00.393 回答