2009-09-02 10 views
0

Der Scheduler, der als Daemon in JVM ausgeführt wird, um Objekte zu sammeln, kann mit JMX überwacht werden. Haben wir eine Möglichkeit zu sagen, dass es sich um die Objekte handelt, die jetzt Müll sammeln könnten. Auf diese Weise können wir herausfinden, dass erstellen spezifische Objekte unserer Klassen und die Instanzen werden in Erinnerung gehalten, wann sie Müll gesammelt werden können und wie viel Speicher sie aufnehmen. Gibt es auch eine Möglichkeit zu sagen, wie viel Speicher im Durchschnitt eine Instanz meiner Klasse braucht.Stellt java müll scheduler es Details in irgendeiner Form dar?

Ich weiß, dass diese Frage dumm sein kann, aber obwohl wir keine Speicherbereinigung erzwingen können, können wir zur Laufzeit herausfinden, welche Objekte nicht durch andere Objekte verbunden sind (also überhaupt nicht verwendet werden). Können wir finden schwache Referenzen zur Laufzeit, gibt es eine Möglichkeit, das darzustellen.

+0

"obwohl wir keine Müllsammlung erzwingen können" Ja, wir können! 'System.gc()' – Marian

+4

@Marian - Aufruf System.gc() schlägt nur vor, dass der GC-Lauf - es ist nicht garantiert – Mark

+3

@Marian - nein wir können nicht, 'System.gc()' macht keine Garantien über wann Der Garbage Collector wird ausgeführt. –

Antwort

4

Wonach gefragt wird, heißt Garbage Collection Tuning, und es hat viele Ressourcen im Web, wie this.

Insbesondere gibt es eine Anwendung, die Sie verwenden können, um das Verhalten des Speichers der Java-Anwendung wie VisualVM zu überwachen. Sie können auch die VM machen alle Garbage Collection in eine Datei zu drucken, indem Sie die folgenden Flags an die commnad Zeile hinzufügen:

-verbose:gc 
-XX:+PrintGCTimeStamps 
-XX:+PrintGCDetails 

Und dann Analyse-Anwendung wie gcviewer ot pmat sie zu analysieren.

4

Verwenden Sie dazu einen Profiler - sehen Sie sich Visual VM an.

Verwandte Themen