Frage

Ich habe einen Produktionsserver mit dem folgenden Flag ausgeführt werden: - XX: + HeapDumpOnOutOfMemoryError

Letzte Nacht hat es erzeugt eine Java-38942.hprof Datei, wenn unser Server einen Heap-Fehler aufgetreten. Es stellt sich heraus, dass die Entwickler des Systems der Flagge wussten aber keine Möglichkeit, nützliche Informationen von ihm zu erhalten.

Irgendwelche Ideen?

War es hilfreich?

Lösung

Wenn Sie ein ziemlich fortgeschrittenes Werkzeug wollen um einige ernsthafte Stossen zu tun, schauen Sie unter Projekt Memory Analyzer bei Eclipse, beigetragen, die sie von SAP.

Einige von dem, was Sie tun können, ist überwältigend gut für die Suche nach Speicherlecks usw. -. Einschließlich einer Form von begrenztem SQL (OQL) gegen die Objekte im Speicher ausgeführt wird, das heißt

  

SELECT toString (vorName) FROM com.yourcompany.somepackage.User

Insgesamt brillant.

Andere Tipps

Sie können mit jhat , The Java Heap Analysis Tool standardmäßig mit dem JDK zur Verfügung gestellt. Es ist Zeilenbefehl aber startet einen Webserver / Browser Sie den Speicher zu untersuchen verwenden. Nicht das benutzerfreundlichste, aber zumindest ist es bereits die meisten Orten installiert werden Sie gehen. Eine sehr nützliche Ansicht ist der „Halde Histogramm“ Link am unteren Ende.

ex: jhat -port 7401 -J-Xmx4G dump.hprof

jhat kann OQL "in diesen Tagen" als auch (unten Link "execute OQL")

execute

Sie können auch verwenden HeapWalker von der Netbeans Profiler oder die < a href = "https://visualvm.github.io/" rel = "noreferrer"> Visuelle VM Stand-alone-Tool. Visual VM ist eine gute Alternative zu jhat als es allein steht, sondern ist viel einfacher als jhat zu verwenden.

Sie benötigen Java 6+ vollständig von Visual VM verwenden.

Nehmen Sie einfach den Eclipse-Memory Analyzer . Es gibt nichts Besseres da draußen, und es ist kostenlos.

jhat ist nur geeignet für "Spielzeug-Anwendungen"

YourKit Java Profiler scheint sie auch zu behandeln.

Wenn Sie eine benutzerdefinierte Analyse Ihrer heapdump tun wollen, dann gibt es:

Diese Bibliothek schnell ist, aber Sie benötigen, um Ihre Analyse Code in Java zu schreiben.

Aus der Dokumentation:

  • Schaff keine temporären Dateien auf der Festplatte Heapdump zu verarbeiten
  • Kann arbeiten direkt GZ komprimierte Heapspeicherauszüge
  • HeapPath Notation
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top