Pourquoi ma machine virtuelle Sun Sun ne parvient-elle pas à s'initialiser lorsque je règle PermGen à une valeur supérieure à 128 Mo?
Question
Je dois augmenter mon PermGen. Actuellement, je passe les paramètres suivants en ligne de commande:
-XX: PermSize = 128m
-XX: MaxPermSize = 128m
Cela fonctionne. Si j’essaie d’augmenter les valeurs, ma machine virtuelle Java ne parvient pas à s’initialiser, ce qui me donne cette erreur:
[2009-06-18 01:39:44] [info] Une erreur s'est produite lors de l'initialisation de la machine virtuelle.
[2009-06-18 01:39:44] [info] Impossible de réserver suffisamment d'espace pour le tas d'objets
[2009-06-18 01:39:44] [info]
[2009-06-18 01:39:44] [395 javajni.c] [erreur] Échec de la création de Java Java
Plus précisément, j'essaie de démarrer Tomcat dans le JRE6 inclus, mais je ne pense pas que cela devrait compter.
Modifier: J'utilise une image de machine virtuelle Win2k3 avec 2 Go de RAM. J'amorce la machine virtuelle Java à l'aide de l'application Monitor Tomcat avec les paramètres suivants:
Pool de mémoire initial: 1024 , pool de mémoire maximal: 1536
-XX: PermSize = 128m
-XX: MaxPermSize = 128m
-XX: + CMSPermGenSweepingEnabled
-XX: + CMSClassUnloadingEnabled
-XX: + UseConcMarkSweepGC
-Dcatalina.home = C: \ Programmes de base \ Apache Software Foundation \ Tomcat 6.0
-Dcatalina.base = C: \ Programmes de base \ Apache Software Foundation \ Tomcat 6.0
-Djava.endorsed.dirs = C: \ Program Files \ Fondation Apache Software \ Tomcat 6.0 \ endossé
-Djava.io.tmpdir = E: \ tomcat \ temp
-Djava.util.logging.manager = org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file = C: \ Program Files \ Fondation Apache Software \ Tomcat 6.0 \ conf \ logging.properties
La solution
Perm Gen étant un additif à Heap, vérifiez les processus: vous devez disposer d'au moins 1,5 Go de votre mémoire 2G.
Autres conseils
Essayez de lui donner un plus gros tas avec -Xmx512m (cela donnera 512 Mo)
Quels autres paramètres de mémoire utilisez-vous? Combien de mémoire y a-t-il dans votre machine? Êtes-vous sur une machine 32 bits ou 64 bits?
J'ai 2 Go de mémoire et je lance tomcat avec les paramètres -Xmx1024m -XX: PermSize = 512m -XX: MaxPermSize = 512m. Cela fonctionne généralement bien.