2016-08-17 7 views
3

Meine Webanwendung mit Java eines Tages stürzte ab und erzeugte einen großen Core-Dump (5,5 GB). Ich habe versucht, IBM Thread and Monitor Dump Analyzer for Java zu verwenden, um diese Core-Dump zu analysieren, aber während die Core-Dump zu lesen, die Konsole sagte:Wie analysiert man einen großen Core-Dump, der generiert wird, wenn JVM abstürzt

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) 

Es scheint, dass die Core-Datei zu groß ist, mit diesem Werkzeug zu analysieren. Das Erhöhen der Heap-Größe mit der Option -Xmx10g hat nicht funktioniert.

Welches Werkzeug kann verwendet werden, um solch eine große Kerndatei zu analysieren?


2016-08-17 13:07 Aktualisiert: Ich habe versucht, Eclipse-MAT-Tool zu verwenden, aber ich stellte einen folgenden Fehler, wenn ich die Dump-Datei zu lesen versucht.

Muss ich eine Art Vorverarbeitung durchführen, damit die Speicherauszugsdatei für das Eclipse MAT-Tool lesbar wird?

+1

Basierend auf der Größe der Datei ist dies wahrscheinlich entweder eine Heap-Dump-Datei oder eine Systemkerndatei. keine Java-Core-Datei (was das von Ihnen verwendete Tool analysiert). Blick auf den oberen Zeilen der Datei, eine Java-Core-Datei ist Text und wird mit so etwas wie starten: 0SECTION TITEL Subkomponente Dump Routine NULL =================== ============ 1TICHARSET 1252 1TISIGINFO Dump vom Benutzer angefordert (00100000) Durch com.ibm.jvm.Dump.JavaDump 1TIDATETIME Datum: 08.08.2016 um 00:16:33 Ein Heap-Dump wäre eine Binärdatei (phd), die viel größer ist. – user3745362

Antwort

0

Es scheint, dass diese Core-Datei nicht für Java-verwandte Tools wie Eclipse MAT-Tool oder IBM Thread und Monitor Dump Analyzer für Java ist. Die Werkzeuge für die Kerndatei sind gdb oder pmap, pstack. Ich dachte, ich könnte Debuggen, warum Anwendung JVM abstürzt, aber die Kerndatei scheint wenig Informationen über Dinge auf Anwendungsebene zu haben.

1

Ich hatte großen Erfolg mit Eclipse MAT tool. Sie können den Heap auch anpassen, indem Sie die Datei .ini in ihrem Installationsordner ändern, wie Sie es in Eclipse tun würden. Stellen Sie jedoch sicher, dass auf Ihrem PC genügend RAM verfügbar ist, bevor Sie einen Heap-Dump laden.

+0

Vielen Dank für Ihre Antwort. Leider trat ein Fehler auf, als ich versuchte, die Speicherauszugsdatei mit MAT zu lesen. Ich habe die Fragen so bearbeitet, dass sie die Fehlermeldung von MAT enthalten. – umainyosu

+0

War IBM VM abgestürzt? WAR? –

+0

Es war nicht IBM VM, sondern OpenJDK. – umainyosu

Verwandte Themen