2012-04-03 14 views
0

Ich habe einen Server mit einem 3 GB JVM mit einem 750-Meg-Permgen-Speicherplatz. Selbst nachdem ich mehr Hardware in diese dumme Anwendung geworfen habe, bekomme ich immer noch den gelegentlichen Speicher-Heap-Dump. Ich muss herausfinden, was zur Zeit des Absturzes vor sich ging, aber ich habe ein Problem mit meinem Analysetool.Java-Heap-Dump-Analyse-Tools stürzen

Die JVM läuft auf AS/400-Hardware, was bedeutet, dass ich die IBM PowerPC-Version der JVM benötige. Da IBM natürlich IBM ist, änderten sie das Format der Speicherauszugsdatei von der Standardversion von Sun (Oracle) in die benutzerdefinierte IBM Version. Offensichtlich sind die einzigen Dump-Analyse-Tools, die es gibt, als Eclipse-Plugins gebaut worden, das Plugin hat ein IBM-Plugin, das es erlaubt, die benutzerdefinierte Dump-Datei von IBM zu lesen.

Das ist die Konfiguration, jetzt das Problem. Das absolut größte, das ich die JVM auf meinem Laptop ankurbeln kann, ist 4800 MB mit einer 4700 Megauge Permgen. Eclipse wird nicht mit höher gesetzt, ich vermute, weil das über 100% des verfügbaren Speichers meines Laptops dauert. Selbst bei all dem Platz, Eclipse gibt mir Heap-Dumps, die versuchen, die Datei zu analysieren.

Gibt es noch andere Analysetools, die keine JVM benötigen, die größer ist als die JVM, die ich analysieren möchte?

hier ist ein Protokolleintrag aus dem 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 
+0

Wie läuft es mit MAT? von innen ISA? Wenn ja, wie erhöhen Sie die -Xmx? (zB: wie können Sie sicher sein, dass es Wirkung zeigt?) –

Antwort

0

Eclipse Memory Analyzer (MAT) ist das beste Werkzeug Haufen abstürzt Dumps zu analysieren.

+0

ja, das ist was ich benutze und habe das Problem mit. – scphantm

+1

Sie müssen Eclipse Speicher nicht so viel erhöhen. Ich hatte gute Erfolge beim Analysieren mehrerer Gb-Dumps, wobei Eclipse mit weniger als 1 GB Speicher arbeitete. Suns JHat-Tool öffnete diese Deponien nicht einmal. Wie auch immer, Sie haben nicht im Detail erklärt, welche Art von Problem Sie mit dem Dump-Analyse-Tool haben. –

+0

Ich habe die Eclipse-Logdatei oben hinzugefügt. Selbst wenn die JVM so hoch gedreht ist, wie sie ist, sehen Sie die Ergebnisse. Eine Sache, die ich nicht versucht habe, ist die eigenständige MAT. Ist es möglich das IBM Plugin in den Stand-alone zu installieren? – scphantm

Verwandte Themen