Domanda

ogni 15-30 minuti Netbeans mostra un "java.lang.OutOfMemoryError: PermGen space". Da quello che ho imparato da Google questo sembra essere correlato a perdite classloader o perdite di memoria in generale.

Purtroppo tutti i suggerimenti che ho trovato sono stati connessi ai server di applicazioni e non ho idea di loro adattato a Netbeans. (Io non sono nemmeno sicuro che sia lo stesso problema)

E 'un problema nella mia richiesta? Come faccio a trovare la fonte?

È stato utile?

Soluzione

E 'a causa della costante di classe di carico.

Java esercizi classe codice byte e tutte le costanti (es costanti stringa) in mucchio permanente che non rifiuti raccolti di default (che hanno senso in maggioranza delle situazioni perché le classi sono caricati una sola volta durante la vita di una domanda).

In applicazioni che spesso caricare le classi durante una vita intera che sono:

    server
  • applicazioni web e durante la ridistribuzione calda;
  • di IDE durante l'esecuzione di applicazioni sviluppate (ogni volta che si ha colpito pulsante Esegui in NetBeans o Eclipse carica classi della propria applicazione di una nuova);
  • ecc Questo comportamento è improprio perché un mucchio riempie pieno alla fine.

È necessario attivare Collezione Permanente mucchio di spazzatura per evitare questo errore.

Io uso le opzioni

-XX:MaxPermSize=256M
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled

(fermato il mio Eclipse 3.4 da lanciare "java.lang.OutOfMemoryError: PermGen space" così dovrebbe funzionare anche con NetBeans).

Modifica : Basta notare che per Netbeans di impostare queste opzioni in: [Netbeans installation]\etc\netbeans.conf Si dovrebbe prefixe quelle opzioni con -J e aggiungerli a netbeans_default_options (vedi commenti in netbeans.conf per maggiori informazioni).

Altri suggerimenti

Provare ad aggiungere il seguente argomento per NetBeans netconf: -J-XX: MaxPermSize = 256m

collegare su come impostare la dimensione del PermSize. Molto probabilmente questo non è un problema del codice, per cui l'unica soluzione sarebbe quella di aumentare la l'PermSize. Ho trovato che questo è abbastanza spesso, quando si lavora con JAXB. In generale, se si utilizza molte librerie che si dipendono anche molti altri file jar, la dimensione predefinita dello spazio PermGen può non essere abbastanza grande.

Vedere questi post del blog per maggiori dettagli: Classloader perdite e Come risolvere il temuta "java.lang.OutOfMemoryError: spazio PermGen"

Se si sta sviluppando un'applicazione web, provare a mettere l'opzione vm server

-Xmx512m -Xms512m XX: MaxPermSize = 512m

Vai su Strumenti / Server // Piattaforma / VM Options (Netbeans 7.4)

È possibile modificare le opzioni di avvio di NetBeans JVM modificando il file /etc/netbeans.conf. Mi capita spesso di avere questo tipo di errori quando sviluppo una webapp e schiero spesso. In quel caso, ho riavviare Tomcat di volta in volta.

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