Il est à cause de la charge constante de classe.
Java stocke le code octet de classe et toutes les constantes (par exemple les constantes de chaîne) dans le tas permanent qui n'est pas récupéré par défaut (ce qui est logique dans la plupart des cas).
Dans les applications qui se chargent souvent des classes au cours d'une vie entière qui sont:
- serveurs Web et d'applications pendant le redéploiement à chaud; IDE lors de l'exécution d'applications développées (chaque fois que vous cliquez sur le bouton Exécuter dans Netbeans ou Eclipse, les classes de votre application sont remplacées);
- etc ce comportement est incorrect car un tas remplit finalement complet.
Vous devez activer la récupération de place permanente pour éviter cette erreur.
J'utilise les options
-XX:MaxPermSize=256M
-XX:+CMSClassUnloadingEnabled
-XX:+CMSPermGenSweepingEnabled
(arrêté mon éclipse 3.4 de jeter "java.lang.OutOfMemoryError: PermGen space
" il devrait aussi travailler avec NetBeans).
Modifier: note juste que pour Netbeans vous définissez ces options: [Netbeans installation]\etc\netbeans.conf
Vous devriez préfixé ces options avec -J
et les ajouter à netbeans_default_options
(voir les commentaires à netbeans.conf
pour plus d'informations).
voir aussi http://stackoverflow.com/questions/717550/java-lang-outofmemoryerror-java-heap-space-with-netbeans – Steen
Pourquoi ne pas mettre à niveau vers une version plus récente de NetBeans? 6.5 est vraiment vieux. –
@a_horse_with_no_name: Comme c'est cette question. Je l'ai demandé il y a plus de trois ans. –