如何分析Java核心转储中的信息?

42 java coredump analysis

如果进程崩溃并离开核心转储,或者我创建了一个核心转储,gcore那我该如何分析呢?

我希望能够使用jmap,jstack,jstat等也看到所有变量的值.

这样我就可以找到崩溃或冻结的JVM的原因.

chi*_*tom 42

好的,如果你用gcore或gdb创建了核心转储,那么你需要将它转换为一个叫做HPROF文件的东西.这些可以由VisualVM,Netbeans或Eclipse的Memory Analyzer Tool(以前称为SAP Memory Analyzer)使用.我推荐Eclipse MAT.

要转换文件,请使用命令行工具jmap.

# jmap -dump:format=b,file=dump.hprof /usr/bin/java core.1234
Run Code Online (Sandbox Code Playgroud)

哪里:

dump.hprof是您要创建的hprof文件的名称

/ usr/bin/java是生成核心转储的java二进制版本的路径

core.1234是您的常规核心文件.


cmd*_*cmd 11

如果您使用的是IBM JVM,下载IBM线程和监视器转储分析器.这是一个很好的工具.它提供了线程细节,可以指出死锁等.以下博客文章提供了如何使用它的很好的概述.


小智 5

也许VisualVM可以提供帮助(还没有机会亲自尝试).链接:

http://java.sun.com/javase/6/docs/technotes/guides/visualvm/coredumps.html


ska*_*man 5

你确定核心转储是你想要的吗?这将包含正在运行的JVM的原始内容,而不是java级别的信息.也许JVM堆转储更符合您的需求.


Kar*_*arl 0

IBM 提供了许多也可以在 sun jvm 上使用的工具。看看 alphaworks 上的一些项目,他们提供了堆和线程转储分析器

卡尔