3 Stimmen

Es kommt zu einem Speicherengpass beim Analysieren eines Java-Heap-Dumps

Ich habe ein seltsames Problem. Ich muss einen Java-Heap-Dump (von einer IBM JRE) mit einer Größe von 1,5 GB analysieren. Das Problem ist, dass beim Analysieren des Dumps (ich habe HeapAnalyzer und den IBM Memory Analyzer 0.5 ausprobiert) die Tools den Speicher erschöpfen und ich den Dump nicht wirklich analysieren kann. Ich habe 3 GB RAM in meinem Computer, aber es scheint, als ob es nicht ausreicht, um den 1,5 GB Dump zu analysieren.

Meine Frage ist, kennst du ein spezifisches Tool zur Heap-Dump-Analyse (das IBM JRE-Dumps unterstützt), das ich mit der Menge an Speicher, die ich habe, ausführen könnte?

Danke.

0 Stimmen

Wie groß ist die maximal Heap-Größe für die JVM eingestellt, wenn Sie diese Tools ausführen? Stellen Sie sicher, dass sie mindestens 2 GB beträgt.

0 Stimmen

Ich habe diese Einstellung tatsächlich manipuliert, tatsächlich das Maximum, das ich bei der Nutzung der Tools verwenden konnte, war 1600 MB (-Xmx1600m) von meinem Rechner aus, wenn ich einen größeren Wert angebe, erhalte ich einen Fehler, der besagt, dass es nicht möglich war, die angeforderte Menge an Speicher zuzuweisen.

2 Stimmen

Leihen Sie eine 64-Bit-Maschine für eine halbe Stunde aus.

4voto

Amir Afghani Punkte 36713

Probieren Sie das SAP Memory Analyzer-Tool aus, das auch ein Eclipse Plugin hat. Dieses Tool erstellt Indexdateien auf der Festplatte, während es die Dump-Datei verarbeitet, und benötigt viel weniger Speicher als Ihre anderen Optionen. Ich bin ziemlich sicher, dass es die neueren IBM JREs unterstützt. Das gesagt - mit einer 1,5 GB großen Dump-Datei haben Sie möglicherweise keine andere Wahl, als eine 64-Bit-JVM auszuführen, um diese Datei zu analysieren. Ich schätze normalerweise, dass eine Heap-Dump-Datei der Größe n 5*n Speicher benötigt, um mit Standard-Tools zu öffnen, und 3*n Speicher, um mit MAT zu öffnen, aber Ihre Erfahrungen können je nach Inhalt des Dumps variieren.

0 Stimmen

Stimme MAT zu. Es war mir möglich, 1,5 GB Heap-Dumps zu öffnen, jedoch nur unter Verwendung eines 64-Bit-JVM auf einem Rechner mit 4 GB Arbeitsspeicher.

0 Stimmen

Ich konnte MAT auf einem Linux-Betriebssystem ausführen, dieser ist ein 32-Bit-Betriebssystem, aber es scheint, dass Linux tatsächlich Prozesse von 3 GB handhaben kann (ich habe -Xmx3000m verwendet). Ich konnte schließlich den Dump analysieren und jetzt bin ich in der Lage, von Windows aus zu analysieren =)

1voto

Ram Lakshmanan Punkte 81

Es wird schwierig sein, einen 1,5GB-Heap-Dump auf einem 3GB-RAM zu analysieren. Denn in diesen 3GB würden Ihr Betriebssystem, andere Prozesse, Dienste,... leicht 0,5GB einnehmen. Sie bleiben also nur mit 2,5GB übrig. heapHero Tool ist effizient bei der Analyse von Heap-Dumps. Es sollte nur 0,5GB mehr als die Größe des Heap-Dumps zur Analyse benötigen. Sie können es ausprobieren. Die beste Empfehlung ist jedoch, den Heap-Dump auf einer Maschine mit ausreichend Speicher zu analysieren ODER Sie können eine AWS ec2-Instanz nur für die Analyse von Heap-Dumps erhalten. Nach der Analyse der Heap-Dumps können Sie die Instanz beenden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X