如果我在试图分析的JAR (用mvn assembly:assembly编译)中有一个类,那么什么命令可以获得一个有效的核心转储,我可以在jhat或Eclipse Memory Analyzer中使用它?
我试着运行这个:
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文档时,我发现必须传递类名。当它在罐子里的时候我该怎么做?
发布于 2012-11-06 01:23:43
类是从JAR文件加载的这一事实与堆转储无关。
您可以使用jmap获取可用的HPROF堆转储,而无需修改启动命令。
jmap -heap:format=b <pid>其中是您可以使用jps命令行工具获取的进程id。这两个可执行文件都是JDK的一部分。
https://stackoverflow.com/questions/13236444
复制相似问题