So cos'è PermGen, a cosa serve, perché fallisce, come aumentarlo ecc.
Quello che non so è cosa significa effettivamente PermGen. Permanente ... Gen ... qualcosa?
Qualcuno sa cosa significa effettivamente PermGen?
So cos'è PermGen, a cosa serve, perché fallisce, come aumentarlo ecc.
Quello che non so è cosa significa effettivamente PermGen. Permanente ... Gen ... qualcosa?
Qualcuno sa cosa significa effettivamente PermGen?
Risposte:
Generazione permanente. I dettagli sono ovviamente specifici dell'implementazione.
In breve, contiene gli oggetti Java associati alle classi e alle stringhe internate. Nell'implementazione client di Sun con condivisione attiva, la classes.jsa
memoria è mappata per formare i dati iniziali, con circa metà di sola lettura e metà di copia su scrittura.
Gli oggetti Java che sono semplicemente vecchi vengono conservati nella Tenured Generation.
PermGen viene utilizzato dalla JVM per conservare le classi caricate. Puoi aumentarlo usando:
-XX:MaxPermSize=384m
se stai usando Sun JVM o OpenJDK.
Quindi, se ottieni un'eccezione OutOfMemoryException: PermGen, devi ingrandire PermGen o potresti avere problemi con il caricatore di classi.
Generazione permanente. Vedere la guida all'ottimizzazione di Java GC per ulteriori dettagli sul Garbage Collector.
Corrispondenza non propriamente correlata alla domanda originale, ma qualcuno potrebbe trovarla utile. PermGen è davvero un'area della memoria dove Java era solito mantenere le sue classi. Quindi, molti di noi si sono imbattuti in OOM in PermGen, se ci fossero, ad esempio, molte classi.
A partire da Java 8, l'area PermGen è stata sostituita dall'area MetaSpace, che è più efficiente ed è illimitata per impostazione predefinita (o più precisamente - limitata dalla quantità di memoria nativa, a seconda della jvm a 32 o 64 bit e della disponibilità della memoria virtuale del sistema operativo). Tuttavia è possibile regolarlo in alcuni modi, ad esempio specificando un limite massimo per l'area. Puoi trovare informazioni più utili in questo post del blog .
PermGen è l'acronimo di Permanent Generation .
Ecco un breve riassunto su DDJ
Permgen sta per generazione permanente. È una delle aree di memoria JVM. Fa parte di Heap con dimensioni fisse utilizzando un flag chiamato MaxPermSize.
Perché il nome "PermGen"?
Questo permgen è stato chiamato nei primi giorni di Java. Permgen mains conserva tutti i metadati delle classi caricate. Ma il problema è che una volta caricata una classe, rimarrà nella JVM fino all'arresto della JVM. Quindi il nome permgen è optare per quello. Ma in seguito, è entrato in scena il caricamento dinamico delle classi ma il nome non è stato modificato. Ma con Java 8 , hanno risolto anche questo problema. Ora permagen è stato rinominato MetaSpace con dimensioni di memoria dinamiche.