我创建了一个堆转储文件,HPROF使用这个命令:
java -agentlib:hprof -cp "..\..\jars\trove.jar;.\bin" com.mysite.MyApp
这成功地创建这是5MB左右的文件“java.hprof.txt”。 然后我打开了jvisualvm要查看此文件,并加载它。但VisualVM的似乎被卡在载入画面。 屏幕下方已经运行了大约10分钟吧。
我错过了一步? 我应该有HPROF在命令行中使用不同的选项? 我怎么能看这种堆转储文件?
我创建了一个堆转储文件,HPROF使用这个命令:
java -agentlib:hprof -cp "..\..\jars\trove.jar;.\bin" com.mysite.MyApp
这成功地创建这是5MB左右的文件“java.hprof.txt”。 然后我打开了jvisualvm要查看此文件,并加载它。但VisualVM的似乎被卡在载入画面。 屏幕下方已经运行了大约10分钟吧。
我错过了一步? 我应该有HPROF在命令行中使用不同的选项? 我怎么能看这种堆转储文件?
VisualVM的支持二进制格式HPROF堆转储。 它更容易使用VisualVM的创建堆转储。 如果这是不可能的使用VisualVM的,你可以使用jmap -dump:live,format=b,file=heap.bin <pid>
其优点是,你不需要任何特殊的启动参数并没有慢下来的HPROF代理库造成的。
就我而言,我已经改变堆转储文件的文件权限解决了这个问题。 原来的VisualVM试图加载该文件,但权限被拒绝(这是奇怪的,因为VisualVM的是一个创建转储文件),但VisualVM的不给你的错误信息。 我已经下载了Eclipse内存分析器( https://www.eclipse.org/mat/downloads.php )。 它给了我一个错误信息。