61

我正在使用以下命令创建堆转储:

jmap -dump:file=DumpFile.txt <process-id>

我已经打开了生成的文件 -DumpFile.txt但它不是可读格式。所以请让我知道如何分析生成文件中的数据。

4

7 回答 7

55

您应该使用jmap -heap:format=b <process-id>没有任何路径。因此它会创建一个 *.bin 文件,您可以使用该文件jvisualvm.exe(与 jmap 相同的路径)打开该文件。这是打开此类转储文件的好工具。

于 2013-06-12T13:23:55.783 回答
41

您可以使用jhat(Java Heap Analysis Tool)读取生成的文件:

jhat [ options ] <heap-dump-file>

jhat 命令解析 java 堆转储文件并启动 web 服务器。jhat 使您能够使用您最喜欢的网络浏览器浏览堆转储。

请注意,您应该有一个hprof二进制格式的输出,以便能够使用jhat. 您可以使用format=b选项以这种格式生成转储。

-dump:format=b,file=<filename>
于 2013-02-28T08:41:26.637 回答
14
于 2017-05-13T16:08:43.553 回答
10

如果你使用 Eclipse 作为你的 IDE,我会推荐优秀的 eclipse 插件内存分析器

另一种选择是使用 JVisualVM,它也可以读取(和创建)堆转储,并且随每个 JDK 一起提供。您可以在 JDK 的 bin 目录中找到它。

于 2013-02-28T08:42:42.023 回答
5

VisualVm 不随 Apple JDK 一起提供。您可以将 VisualVM Mac Application bundle(dmg) 用作单独的应用程序来弥补这一点。

于 2013-10-15T23:24:01.813 回答
-1

MAT、jprofiler、jhat 是可能的选项。由于 jhat 自带 jdk,你可以很容易地启动它来做一些基本的分析。看一下这个

于 2013-04-18T18:15:05.683 回答
-1

如果你只是运行 jmap -histo:live 或 jmap -histo,它会在控制台上输出内容!

于 2020-11-17T06:01:27.107 回答