Domanda

So cos'è PermGen, a cosa serve, perché non funziona, come aumentarlo, ecc.

Quello che non so è ciò che PermGen rappresenta realmente. Permanente ... Gen ... qualcosa?

Qualcuno sa cosa significa realmente PermGen?

È stato utile?

Soluzione

Generazione permanente. I dettagli sono ovviamente specifici per l'implementazione.

In breve, contiene gli oggetti Java associati alle classi e alle stringhe internate. Nell'implementazione client di Sun con condivisione attivata, classes.jsa è mappato in memoria per formare i dati iniziali, con circa metà di sola lettura e metà di copia-scrittura.

Gli oggetti Java che sono semplicemente vecchi vengono conservati nella Generazione di possesso.

Altri suggerimenti

PermGen viene utilizzato da JVM per contenere le classi caricate. Puoi aumentarlo usando:

XX: MaxPermSize = 384m

se si utilizza Sun JVM o OpenJDK.

Quindi, se ottieni OutOfMemoryException: PermGen, devi ingrandire PermGen o potresti avere problemi con il caricatore di classe.

Generazione permanente. Consulta la Guida alla messa a punto del GC per ulteriori dettagli sul cestino della spazzatura.

Corrispondenza non realmente correlata alla domanda originale, ma potrebbe essere che qualcuno lo troverà utile. PermGen è davvero un'area in memoria in cui Java manteneva le sue classi. Quindi, molti di noi si sono imbattuti in OOM in PermGen, se c'erano, ad esempio, molte classi.

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 disponibilità della memoria virtuale jvm e del sistema operativo a 32 o 64 bit) . Tuttavia è possibile ottimizzarlo in qualche modo, ad esempio specificando un limite massimo per l'area. Puoi trovare ulteriori informazioni utili in questo post del blog .

PermGen sta per Permanent Generation .

Ecco un breve errore su DDJ

Se ricordo bene, il gen rappresenta la generazione, come in un garbage collector generazionale (che tratta gli oggetti più giovani in modo diverso rispetto agli oggetti di mezza età e "permanenti"). Il principio di località suggerisce che gli oggetti creati di recente verranno spazzati via per primi.

Permgen è l'acronimo di Permanent Generation. È 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 nominato nei primi giorni di Java. Permgen mains mantiene tutti i metadati delle classi caricate. Ma il problema è che una volta caricata una classe rimarrà nella JVM fino allo spegnimento della JVM. Quindi il nome Permgen è optare per quello. Ma più tardi, il caricamento dinamico delle classi è entrato in scena ma il nome non è stato cambiato. Ma con Java 8 hanno risolto anche questo problema. Ora permagen è stato rinominato come MetaSpace con dimensioni della memoria dinamica.

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