Eclipse Java堆转储分析工具不断崩溃

Eclipse Java堆转储分析工具不断崩溃,eclipse,jvm,Eclipse,Jvm,我有一台运行3gb JVM的服务器,有750兆的permgen空间。即使在这个愚蠢的应用程序上投入了更多的硬件,我仍然会偶尔遇到内存不足的堆转储。我需要弄清楚坠机时发生了什么,但我的分析工具有问题 JVM在AS/400硬件上运行,这意味着我需要IBM的PowerPC版本的JVM。当然,IBM是IBM,他们将转储文件的格式从标准Sun(Oracle)版本更改为自定义IBM版本。显然,唯一的转储分析工具是作为Eclipse插件构建的,该插件有一个IBM插件,允许它读取IBM的自定义转储文件 这就是配

我有一台运行3gb JVM的服务器,有750兆的permgen空间。即使在这个愚蠢的应用程序上投入了更多的硬件,我仍然会偶尔遇到内存不足的堆转储。我需要弄清楚坠机时发生了什么,但我的分析工具有问题

JVM在AS/400硬件上运行,这意味着我需要IBM的PowerPC版本的JVM。当然,IBM是IBM,他们将转储文件的格式从标准Sun(Oracle)版本更改为自定义IBM版本。显然,唯一的转储分析工具是作为Eclipse插件构建的,该插件有一个IBM插件,允许它读取IBM的自定义转储文件

这就是配置,现在是问题所在。我能在我的笔记本电脑上启动JVM的绝对最大容量是4800兆和4700兆永久发电机。我怀疑Eclipse在运行时不会将其设置得更高,因为它占用了我笔记本电脑100%的可用内存。即使有这么多空间,Eclipse也会给我堆转储来分析文件

有没有其他分析工具不需要我拥有比我要分析的JVM更大的JVM

下面是eclipse崩溃的日志条目

!ENTRY org.eclipse.core.jobs 4 2 2012-04-02 12:08:10.540
!MESSAGE An internal error occurred during: "Parsing heap dump from 'C:\Users\slepecw\Code\Larry-Heap-Dumps\20110612\heapdump.20110612.165113.17755.0003.phd'".
!STACK 0
java.lang.OutOfMemoryError: Java heap space
    at java.util.Arrays.copyOf(Arrays.java:2882)
    at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:100)
    at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:515)
    at java.lang.StringBuilder.append(StringBuilder.java:189)
    at org.apache.commons.io.output.StringBuilderWriter.write(StringBuilderWriter.java:138)
    at org.apache.commons.io.IOUtils.copyLarge(IOUtils.java:1365)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1340)
    at org.apache.commons.io.IOUtils.copy(IOUtils.java:1287)
    at org.apache.commons.io.IOUtils.toString(IOUtils.java:502)
    at org.eclipse.wb.internal.core.editor.describer.JavaSourceUiDescriber.describe(JavaSourceUiDescriber.java:51)
    at org.eclipse.core.internal.content.ContentTypeCatalog.describe(ContentTypeCatalog.java:218)
    at org.eclipse.core.internal.content.ContentTypeCatalog.collectMatchingByContents(ContentTypeCatalog.java:190)
    at org.eclipse.core.internal.content.ContentTypeCatalog.internalFindContentTypesFor(ContentTypeCatalog.java:401)
    at org.eclipse.core.internal.content.ContentTypeCatalog.internalFindContentTypesFor(ContentTypeCatalog.java:450)
    at org.eclipse.core.internal.content.ContentTypeCatalog.findContentTypesFor(ContentTypeCatalog.java:298)
    at org.eclipse.core.internal.content.ContentTypeMatcher.findContentTypesFor(ContentTypeMatcher.java:57)
    at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDynamicDTFJDump(DTFJIndexBuilder.java:7940)
    at org.eclipse.mat.dtfj.DTFJIndexBuilder.getUncachedDump(DTFJIndexBuilder.java:7862)
    at org.eclipse.mat.dtfj.DTFJIndexBuilder.getDump(DTFJIndexBuilder.java:7675)
    at org.eclipse.mat.dtfj.DTFJIndexBuilder.fill(DTFJIndexBuilder.java:579)
    at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.parse(SnapshotFactoryImpl.java:203)
    at org.eclipse.mat.parser.internal.SnapshotFactoryImpl.openSnapshot(SnapshotFactoryImpl.java:114)
    at org.eclipse.mat.snapshot.SnapshotFactory.openSnapshot(SnapshotFactory.java:145)
    at org.eclipse.mat.ui.snapshot.ParseHeapDumpJob.run(ParseHeapDumpJob.java:83)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)
!SESSION 2012-04-02 12:39:07.107 -----------------------------------------------
eclipse.buildId=M20110909-1335
java.version=1.6.0_30
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=en_US
Framework arguments:  -product org.eclipse.epp.package.java.product
Command-line arguments:  -os win32 -ws win32 -arch x86_64 -product org.eclipse.epp.package.java.product

(MAT)是分析堆转储的最佳工具。

是的,这就是我使用的并且存在问题的地方。您不需要增加那么多Eclipse内存。我已经成功地分析了几个Gb转储,Eclipse运行的内存不足1Gb。Sun的JHat工具甚至没有打开这些垃圾堆。无论如何,您还没有详细解释转储分析工具存在什么样的问题。即使JVM的运行速度达到目前的水平,您也可以看到结果。有一件事我没有试过,那就是独立垫子。是否可以将IBM插件安装到单机版?请参阅以了解如何安装IBM插件单机版。您是如何运行MAT的?从ISA内部?如果是这样,您如何提高-Xmx?(即:你如何确保它生效?)