我正在使用以下命令创建堆转储:
jmap -dump:file=DumpFile.txt <process-id>
我已经打开了生成的文件 -DumpFile.txt
但它不是可读格式。所以请让我知道如何分析生成文件中的数据。
您应该使用jmap -heap:format=b <process-id>
没有任何路径。因此它会创建一个 *.bin 文件,您可以使用该文件jvisualvm.exe
(与 jmap 相同的路径)打开该文件。这是打开此类转储文件的好工具。
您可以使用jhat
(Java Heap Analysis Tool)读取生成的文件:
jhat [ options ] <heap-dump-file>
jhat 命令解析 java 堆转储文件并启动 web 服务器。jhat 使您能够使用您最喜欢的网络浏览器浏览堆转储。
请注意,您应该有一个hprof
二进制格式的输出,以便能够使用jhat
. 您可以使用format=b
选项以这种格式生成转储。
-dump:format=b,file=<filename>
如果你使用 Eclipse 作为你的 IDE,我会推荐优秀的 eclipse 插件内存分析器
另一种选择是使用 JVisualVM,它也可以读取(和创建)堆转储,并且随每个 JDK 一起提供。您可以在 JDK 的 bin 目录中找到它。
VisualVm 不随 Apple JDK 一起提供。您可以将 VisualVM Mac Application bundle(dmg) 用作单独的应用程序来弥补这一点。
MAT、jprofiler、jhat 是可能的选项。由于 jhat 自带 jdk,你可以很容易地启动它来做一些基本的分析。看一下这个
如果你只是运行 jmap -histo:live 或 jmap -histo,它会在控制台上输出内容!