2012-12-13 7 views
6

meine leeren unendlichen SchleifeLeere Endlosschleife und GC (JVM). Bitte erläutern Sie die Wirkung

public static void main(String[] args) { 
     while (true) {} 
    } 

und Profilierung in Java VisualVM (Bild) Visual GC

Wie Sie sehen können, ich schaffen keine Objekte. Warum einen Haufen wechseln?

Bitte erläutern Sie den Effekt. Warum?

+0

Schöne Bilder! Aber ich habe deine Frage nicht bekommen. – Stephan

+0

Siehe auch: http://stackoverflow.com/questions/12711106/simple-java-program-creasingly-consuming-memory – assylias

+0

@assylias in Ihrem Link neues Objekt erstellen und Swing. In meinem Beispiel leere Schleife. – couatl

Antwort

7

Grundsätzlich beliebig Java-Anwendung ist Multithread, die Tatsache, dass Ihr Haupt-Thread Speicher nicht reserviert bedeutet nicht, dass die anderen auch nicht zuordnen. In der Tat ist es sehr wahrscheinlich, dass Sie, wenn Sie über VisualVM eine Verbindung herstellen und die Registerkarte GC anzeigen, einige Threads in der VM erzeugt haben, um GC-Ressourcen zu überwachen und VisualVM die Metriken zuzuführen, die diese glänzenden Diagramme werden. Und diese Überwachung wird wahrscheinlich einige eigene Ressourcen für ihre Arbeit bereitstellen.

+0

Wie profile ich das Programm, um keine Objekte zu erzeugen connect VisualVM? – couatl

+0

Ich glaube nicht, dass du kannst. Das Meiste, was Sie tun können, ist einige Tools auf Betriebssystemebene (vmstat, top usw.). Und selbst wenn Sie die Anwendung nicht mit VisualVM überwachen, gibt es JMX, den Finalizer-Thread, den AWT-Thread usw. usw. Nehmen Sie an, dass Ihre Anwendung * einige Threads hat, die einige Ressourcen im Hintergrund zuweisen – gpeche

Verwandte Themen