java 如何分析JVM崩溃时生成的大型核心转储

xj3cbfub  于 5个月前  发布在  Java
关注(0)|答案(2)|浏览(40)

我的Web应用程序使用Java有一天崩溃,并生成了一个大的核心转储(5.5GB)。我试图使用IBM Thread and Monitor Dump Analyzer for Java来分析这个核心转储,但在阅读核心转储时,控制台说:

Exception in thread "Thread-0" java.lang.OutOfMemoryError: Requested array size exceeds VM limit
at java.util.Arrays.copyOf(Arrays.java:3332)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:137)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:121)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:569)
at java.lang.StringBuffer.append(StringBuffer.java:369)
at java.io.BufferedReader.readLine(BufferedReader.java:370)
at java.io.BufferedReader.readLine(BufferedReader.java:389)
at com.ibm.jinwoo.thread.FileTask.processThreadDump(FileTask.java:1858)
at com.ibm.jinwoo.thread.FileTask$ActualTask.<init>(FileTask.java:215)
at com.ibm.jinwoo.thread.FileTask$1.construct(FileTask.java:1368)
at com.ibm.jinwoo.thread.ThreadHandler$1.run(ThreadHandler.java:31)
at java.lang.Thread.run(Thread.java:745)

字符串
似乎核心文件太大,无法使用此工具进行分析。使用选项-Xmx10g增加堆大小不起作用。
什么工具可以用来分析这么大的核心文件?
更新2016-08-17 13:07:我试图使用Eclipse MAT工具,但我遇到了以下错误,当我试图读取转储文件。

Error opening heap dump 'jvm-core.13074'. Check the error log for further details.
Error opening heap dump 'jvm-core.13074'. Check the error log for further details.
Not a HPROF heap dump (java.io.IOException)
Not a HPROF heap dump


我是否需要做一些预处理或其他事情来使转储文件对Eclipse MAT工具可读?

kkih6yb8

kkih6yb81#

我在Eclipse MAT tool上取得了巨大的成功。你也可以通过改变它的安装文件夹中的**.ini**文件来调整它的堆,就像你在Eclipse中所做的那样。但是在加载堆转储之前,请确保你的PC上有足够的RAM。

tsm1rwdh

tsm1rwdh2#

看起来这个核心文件不是用于Java相关的工具,比如Eclipse MAT工具或IBM Thread and Monitor Dump Analyzer for Java。核心文件的工具是gdbpmappstack。我以为我可以调试为什么应用程序会崩溃JVM,但核心文件似乎没有关于应用程序级别的东西的信息。

相关问题