E 'a causa della costante di classe di carico.
Java memorizza codice byte di classe e tutte le costanti (ad esempio costanti stringa) nell'heap permanente che non è garbage collection per impostazione predefinita (che ha senso nella maggior parte delle situazioni perché le classi vengono caricate solo una volta durante il ciclo di vita di un'applicazione).
Nelle applicazioni che spesso caricare le classi durante una vita intera che sono:
- server web e delle applicazioni durante la ridistribuzione calda;
- IDE durante l'esecuzione di applicazioni sviluppate (ogni volta che si preme il pulsante Esegui in Netbeans o eclipse, carica le classi dell'applicazione in modo nuovo);
- ecc. questo comportamento non è corretto perché un heap si riempie alla fine.
È necessario attivare la garbage collection dell'heap permanente per evitare questo errore.
Io uso le opzioni
-XX:MaxPermSize=256M
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
(fermati mio Eclipse 3.4 da lanciare "java.lang.OutOfMemoryError: PermGen space
" così dovrebbe funzionare anche con NetBeans).
Edit: 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).
fonte
2009-03-23 15:11:17
vedere anche http://stackoverflow.com/questions/717550/java-lang-outofmemoryerror-java-heap-space-with-netbeans – Steen
Perché non si esegue l'aggiornamento a una versione più recente di NetBeans? 6,5 è veramente vecchio –
@a_horse_with_no_name: come questa domanda. L'ho chiesto più di tre anni fa. –