有一天,我使用Java的web应用程序崩溃了,生成了一个大的核心转储(5.5GB)。我试图使用IBM线程和监视器转储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工具,但是当我试图读取转储文件时遇到了以下错误。
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工具?
发布于 2016-08-18 13:51:36
这个核心文件似乎不适用于与Java相关的工具,如Eclipse工具或IBM和Monitor for Java。核心文件的工具是gdb或pmap、pstack。我以为我可以调试应用程序崩溃JVM的原因,但是核心文件似乎没有什么关于应用程序级别的信息。
发布于 2016-08-17 02:42:42
我在月蚀垫工具上取得了巨大的成功。还可以像在Eclipse中一样,通过更改安装文件夹中的.ini文件来调整其堆。但是,在加载堆转储之前,请确保您的PC上有足够的RAM可用。
https://stackoverflow.com/questions/38987073
复制相似问题