0

遵循以下过程,但我无法分析生成的转储。

  1. 我尝试使用“jmap -F -dump:format=b,file=/tmp/test.hprof”从 Linux 机器上运行的 Java 进程获取堆转储
  2. 60 秒后按 Ctrl+C
  3. 使用 Eclipse MAT(内存分析器工具)启动上述步骤生成的堆转储,但我看到以下错误。

在“解析来自'/users/sobhan/Test.hprof'的堆转储”期间发生内部错误。java.lang.NullPointerException

PS:我尝试了其他分析工具,如 VisualVM、IBM Heap Analyzer,结果是一样的。我认为堆转储已损坏(此处使用 Ctrl+C 是否有问题?)。如果是这样,请提出正确的方法 lo 优雅地退出 'jmap'

提前致谢。

4

1 回答 1

0

您需要等待堆转储完成。根据堆的大小,可能需要几秒钟到几分钟。至少有一次,我花了 20 分钟(如果我没记错的话,转储的大小约为 10G)。您可以尝试“-dump:live”选项,它只会转储活动对象而不转储垃圾。

jmap -F -dump:live,format=b,file=<file_name.hprof> <rdu_process_id>

但是,您可能也会遇到这个问题

于 2016-12-14T16:27:29.850 回答