2

mvn assembly:assembly如果我在试图分析的 JAR(用 编译)中有一个类,那么获取可以与 jhat 或 Eclipse 内存分析器一起使用的有效核心转储的命令是什么?

我试着运行这个:

java -agentlib:hprof=heap=sites,cpu=samples,file=profile.hprof,format=b -jar the-jar.jar

并且当我停止进程时会创建核心转储。

但 jhat 或 Eclipse 内存分析器都不会将此视为有效转储。

jhat 给了我这个警告:

Resolving 0 objects...
WARNING:  hprof file does not include java.lang.Class!
WARNING:  hprof file does not include java.lang.String!
WARNING:  hprof file does not include java.lang.ClassLoader!

还阅读了 hprof 文档,我看到我必须传递类名。当它在 JAR 中时,我该怎么做?

4

1 回答 1

2

类是从 JAR 文件加载的事实与堆转储无关。

您可以使用jmap来获取可用的 HPROF 堆转储,而无需修改启动命令。

jmap -heap:format=b <pid>

您可以使用jps命令行实用程序获取的进程 ID 在哪里。这两个可执行文件都是 JDK 的一部分。

于 2012-11-05T17:23:42.753 回答