Je développe sur la plateforme standard Lift (maven et jetty). J'obtiens ceci de manière répétée (une fois tous les deux jours) :
Exception in thread "7048009@qtp-3179125-12" java.lang.OutOfMemoryError: PermGen space
2009-09-15 19:41:38.629::WARN: handle failed
java.lang.OutOfMemoryError: PermGen space
Ceci dans mon environnement de développement. Ce n'est pas un problème car je peux continuer à redémarrer le serveur. En déploiement, je n'ai pas ces problèmes, donc ce n'est pas un vrai problème. Je suis juste curieux.
Je ne connais pas très bien la JVM. Je pense que j'ai raison de penser que la mémoire de génération permanente est pour des choses comme les classes et les chaînes internées ? Ce dont je me souviens est un peu mélangé avec le modèle de mémoire .NET...
Quelle est la raison de ce phénomène ? Les valeurs par défaut sont-elles excessivement basses ? Est-ce que c'est lié à tous les objets auxiliaires que Scala doit créer pour les objets Function et autres objets FP similaires ? Chaque fois que je redémarre Jetty avec un nouveau code écrit (toutes les quelques minutes), j'imagine qu'il recharge les classes, etc. Mais même ainsi, il ne peut pas y en avoir autant, n'est-ce pas ? Et la JVM ne devrait-elle pas être capable de gérer un grand nombre de classes ?
Santé
Joe