Dal passaggio a JRE 6, l'utilizzo della cache del codice del mio server (non heap) continua a crescere indefinitamente. La mia applicazione crea molte classi in fase di esecuzione, MA queste classi vengono scaricate con successo durante il processo GC. Posso vedere queste classi scaricarsi nei log gc e anche l'utilizzo di permGen rimane costante. In particolare, mi assicuro nel mio codice che queste classi siano orfane una volta che ho finito con loro e quindi ottengono correttamente i dati raccolti da permGen.Cosa causa una perdita della cache del codice JRE 6 JRE?
La cache di codice tuttavia continua a crescere. Mi sono reso conto della cache del codice solo dopo il passaggio a JRE 6. Quindi suppongo che le mie domande siano:
- Il GC include la cache del codice?
- Cosa potrebbe causare una perdita di memoria della cache del codice, in particolare.
- C'è un bug in JDK 6 in quest'area?
Hai provato limitare la dimensione massima con il XX: ReservedCodeCacheSize bandiera runtime? – serg10
Ciao. sì, l'ho appena fatto, rimanda l'inevitabile. Suppongo che sto cercando di capire per cosa viene usata la cache del codice e in che modo nel tuo codice puoi causare una perdita di memoria in quest'area specifica dell'architettura della memoria JVM. Tutti gli altri segmenti della memoria JVM stanno recuperando dati inutili e sono stabili. È solo la cache del codice che sta crescendo indefinitamente e non so perché. Grazie. –
Stai utilizzando un server applicazioni per eseguire il tuo codice o eseguirlo direttamente? – GaZ