Domanda

a mio avvio di Tomcat, ho impostato -Xms, -Xmx a 1GB. VisualVM dentro quando ho memoria monitor

  1. Quando faccio il campionamento della memoria, che non mostra l'utilizzo accurato della memoria, fino a quando, se premo 'istantanea', e poi le classi Java che la memoria utilizzando mostrando modelli corretti e le istanze contano. perché in questo modo?

  2. Inoltre, come ho impostato Tomcat memoria da 1gb, mantenere la memoria su come aumentare ing zip-Zat e salire aroudn 960mb. fino a quando premo "eseguire gc" e la parte posteriore di memoria di 200MB ..

  3. pensi sia necessario per creare scheduler per forza colpire perform.gc () su JVM, everday a mezzanotte?

osservazioni da parte mia descrizione

VisualVM screenshot

È stato utile?

Soluzione

Quello che credo che vedete qui è il Garbage Collector concomitante sta facendo pulizie giovani generazioni, ma il mucchio è costantemente sfornare quindi non può ottenere una sospensione di tutti i riferimenti per una collezione vecchia generazione. Quando si preme il pulsante di GC che stai facendo una collezione "stop-the-world" che blocca tutti i thread, il congelamento del mucchio, e permettendo una collezione molto più grande che si verifichi eseguire. Le mie preoccupazioni principali qui sarebbe - ha una grande collezione mai venuto in mente (dopo ore x)? Presenza di errori OutOfMemory con un mucchio più piccolo?

1) Avete il pulsante di aggiornamento automatico attivato? Può anche essere che profiler fa un piccolo GC (spazio Eden) prima di prendere una fotografia istantanea.

2) Questo è perfettamente normale. raccolta dei rifiuti richiede tempo e risorse (cicli del processore). Se hai impostato il tuo mucchio di grandi dimensioni, si attenderà fino a raggiungere una certa percentuale di che fino ad innescare una garbage collection in sé. Credo che lo spazio di default libero di rapporto di oggetto dal vivo è tra il 40% e il 70% lo so Tomcat specificamente ha cambiato il modo in cui funziona la raccolta dei rifiuti in giro per la versione 5, Tomcat v4 ha avuto problemi di prestazioni perché ha speso un sacco di tempo di esecuzione del garbage collector. Si consiglia di fare qualche ricerca qui e vedere se Tomcat ha opzioni di raccolta dei rifiuti personalizzate.

3) No. Un mucchio quasi piena è esattamente quello che stai cercando per. Può avere senso per rendere il cumulo più piccolo in modo che una garbage collection completa non ci vuole così tanto tempo. E 'di trade-off tra i lotti di garbage collection (pause) e garbage collection lunghe (lunghe pause). Ogni applicazione è diversa, quindi in genere inizia con le impostazioni predefinite e modificare, se necessario. Ci sono un sacco di opzioni per la raccolta dei rifiuti (e collezionisti si alternano), se siete interessati.

Java 5

FAQ , Whitepaper

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top