2012-12-13 11 views
6

mio vuoto infinito cicloVuoto loop infinito e GC (JVM). Si prega di spiegare l'effetto

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

e profilatura in Java VisualVM (foto) Visual GC

Come potete vedere, non mi creo oggetti. Perché cambiare un mucchio?

Si prega di spiegare l'effetto. Perché?

+0

Belle foto! Ma mi dispiace, non ho ricevuto la tua domanda. – Stephan

+0

Vedere anche: http://stackoverflow.com/questions/12711106/simple-java-program-increasingly-consuming-memory – assylias

+0

@assylias nel collegamento crea un nuovo oggetto e Swing. Nel mio esempio Empty loop. – couatl

risposta

7

Fondamentalmente qualsiasi l'applicazione Java è multithread, il fatto che il thread principale non allochi la memoria non significa che anche gli altri non assegnino. In effetti è molto probabile che collegando tramite VisualVM e mostrando la scheda GC hai generato alcuni thread nella VM per monitorare le risorse GC e alimentare VisualVM le metriche che diventano quei grafici brillanti. E quel monitoraggio probabilmente allocherà alcune risorse proprie per svolgere il proprio lavoro.

+0

Come profilare il programma, non per produrre oggetti che collegano VisualVM? – couatl

+0

Non penso che tu possa. Il massimo che puoi fare è utilizzare alcuni strumenti a livello di sistema operativo (vmstat, top, ecc.). E comunque anche se non monitorate l'applicazione con VisualVM, c'è JMX, il thread del finalizzatore, il thread AWT ecc ecc. Ecc. Supponiamo che l'applicazione * abbia * qualche thread che alloca alcune risorse in background – gpeche

Problemi correlati