2012-03-09 9 views
8

Supponendo una JVM a 64 bit, c'è qualche vantaggio significativo nel mantenere MaxPermSize piccolo?Ci sono dei vantaggi nel mantenere MaxPermSize piccolo?

Questo è nel contesto di un'applicazione Java EE che è spesso ridistribuita, ed ha una perdita di classloader. Come soluzione temporanea a medio termine, sembra molto ragionevole fare un salto su MaxPermSize ad un valore assurdo, a patto che non spenga lo spazio di swap del disco.

Poiché codice dell'app dispiegata è quasi tutta inutilizzato (a parte che coinvolti nella perdita), è paging fuori dal sistema operativo. Quindi il carico sulla memoria fisica da detriti non dispiegati sembra trascurabile; questo è stato verificato osservando RSS (la dimensione del working set su Unix).

Ci sono altri effetti di cui dovrei preoccuparmi?

risposta

6

Da JVM HotSpot FAQ

Devo aumentare la dimensione della generazione permanente nel vm cliente?

Questo sarà sempre un giudizio. In generale, l'aumento delle dimensioni di una generazione (e questo non vale solo per la generazione permanente) può ridurre l'incidenza di un'ampia varietà di problemi. Tuttavia, ciò potrebbe causare un eccesso di pagina e/o di raccolta dei rifiuti o di eliminazione da parte di altri processi. eccezioni di memoria.

Esistono due modalità di errore da considerare.

Sollevando MaxPermSize, è possibile che programmi precedentemente ben addestrati che utilizzate per immondizia raccogliere per recuperare lo spazio permanente generazione moriranno paginazione infinita. Per la generazione permanente questo di solito accade solo con il pesante internamento di stringhe temporanee.

L'altra modalità di errore è che lo spazio indirizzo deve essere riservato per la generazione permanente e questo ridurrà quello disponibile per il resto dell'heap (il massimo -Xmx potrebbe essere troppo grande). Ciò farà sì che i programmi configurati per utilizzare tutto lo spazio disponibile non riescano all'inizializzazione.

anche this article dice:

Quindi approfittiamo del fatto che le classi sono conservati nella generazione permanente attraverso la raccolta di generazione permanente prima di raccogliere la generazione di ruolo. E la generazione permanente è attualmente raccolta in serie.

Generazione permanente di grandi dimensioni può causare tempi più lunghi di GC, penso.

+0

Sì, GC è preoccupante - temo che tutto il deadwood debba essere cercapersone. Grazie! –

Problemi correlati