Frage

Wir haben eine lange laufenden Server-Anwendung läuft Java 5, und es Profilieren können wir die alte Generation wächst langsam im Laufe der Zeit sehen. Es ist richtig auf eine vollständige GC befreit, aber ich würde gerne an den unerreichbaren Objekten in Eclipse MAT mit einem Heapdump schauen können. Ich habe erfolgreich einen Heap Dump mit + XX erhalten: HeapDumpOnCtrlBreak, aber die JVM hat immer einen GC vor dem Haufen Dumping. Offenbar geschieht dies nicht auf Java 6, aber wir sind auf 5 jetzt stecken. Gibt es eine Möglichkeit, dies zu verhindern?

War es hilfreich?

Lösung

Ich schlage vor, eine 3rd-Party-Profiler wie YourKit , die es erlauben, können Sie Schnappschüsse zu machen ohne den GC ersten Auftakt. Zusätzlicher Bonus, Sie können, ohne dass die ganze ctrl-Pause Spielereien einen Snapshot erstellen.

Andere Tipps

verwenden jconsole oder VisualVM oder JMC oder ... andere JMX-Management-Konsole. öffnen HotSpotDiagnostic in com.sun.management. select-Methode dumpheap und Eingang zwei Parameter:

  • Pfad zum Abbild-Datei
  • (true / false) Dump nur Live-Objekte. verwenden false alle Objekte abzuladen.

Beachten Sie, dass die Dump-Datei von der JVM geschrieben werden Sie verbunden, nicht durch jvisualvm, so dass, wenn die JVM auf einem anderen System ausgeführt wird, wird es auf diesem System geschrieben werden.

 image description hier

Haben Sie das Standard jmap Werkzeug mit dem JDK ausgeliefert versucht? Die jmap Maut wurde in Java 5 offiziell vorgestellt.

Beispiel Befehlszeile ein: / Java / bin / jmap -heap: format = b

Das Ergebnis kann mit dem Standard jhat Werkzeug oder mit GUI-Anwendungen wie MAT verarbeitet werden.

Ich habe einige Code hier, die einen Heapdump über JMX programmatisch nehmen können:

Link: JmxHeapDumper.java

Die Kommentare im Quellcode enthalten 2 Links zu Artikeln, die nützlichen Informationen zu enthalten, wie Heapspeicherauszüge zu nehmen. Ich weiß es nicht genau, aber wenn Sie Glück sind, vielleicht der JMX Ansatz wäre eine Möglichkeit zur Vermeidung der GC hat. Hoffe, das hilft!

JProfiler ( ej-technologies ) kann dies tun.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top