使用Eclipse Memory Analyzer分析java tomcat线程转储 - 错误输出

时间:2012-01-25 15:00:49

标签: java memory-leaks

所以我使用kill -3获得了一个java tomcat堆/线程转储。 转储似乎以

的形式进入catalina.out
Full thread dump Java HotSpot(TM) 64-Bit Server VM (20.2-b06 mixed mode):

"RMI TCP Connection(2018)-50.28.31.254" daemon prio=10 tid=0x00007f743cb90800 nid=0x2624        runnable [0x00007f7438ef7000]
   java.lang.Thread.State: RUNNABLE

结尾
Heap
 PSYoungGen      total 570432K, used 315753K [0x00000007d5560000, 0x0000000800000000,     0x0000000800000000)
  eden space 442752K, 71% used     [0x00000007d5560000,0x00000007e89ba460,0x00000007f05c0000)
  70000000,0x000000077848b090,0x0000000780000000)

...

我复制并粘贴了上面的内容(以及介于两者之间的所有内容).. 尝试“打开转储”时,Eclipse出现以下错误:

Error opening heap dump 'dump2.txt'. Check the error log for further details.
Error opening heap dump 'dump2.txt'. Check the error log for further details.
Invalid HPROF file header. (java.io.IOException)
Invalid HPROF file header.

我做错了什么?

1 个答案:

答案 0 :(得分:4)

你做错了是这是一个线程转储而不是堆转储。相反,最简单的方法是使用VisualVM

或者,您可以使用jmap创建堆转储,例如:

jmap -dump:file=app.bin 123456

将为进程ID 123456

创建一个名为app.bin的堆转储