如何在jar内部分类?

时间:2012-11-05 16:40:15

标签: java jar profiling executable-jar hprof

如果我在JAR(使用mvn assembly:assembly编译)中有一个类,我正在尝试分析,那么获取有效核心转储的命令是什么,我可以使用jhat或Eclipse Memory Analyzer? / p>

我试过这个:

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

并在停止进程时创建核心转储。

但是jhat或Eclipse Memory Analyzer都没有将其识别为有效转储。

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中时我该怎么做?

1 个答案:

答案 0 :(得分:2)

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

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

jmap -heap:format=b <pid>

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