58 votes

Paramètres de mémoire d'Eclipse lorsque l'on obtient "Java Heap Space" et "Out of Memory".

Lorsque j'ai essayé de lancer et d'exécuter un projet flex/java dans Eclipse, je n'ai cessé d'obtenir une "exception d'absence de mémoire" et "espace de tas Java" en utilisant Eclipse, Tomcat et un JRE.

En faisant des recherches pour essayer de régler les paramètres de la mémoire, j'ai trouvé trois endroits pour les régler :

  • Eclipse.ini

  • Les paramètres JRE sous Fenêtre > Préférences

  • Catalina.sh ou Catalina.bat

Quelles sont les différences entre les paramètres -xms et -xmx dans ces différents endroits et qu'est-ce que cela signifie ?

Y a-t-il un moyen de vérifier que ces paramètres de mémoire sont réglés en conséquence ?

Quels sont les paramètres optimaux -xms et -xmx pour un ordinateur avec 2 Go de RAM ?

D'autres conseils pour la mémoire ?

Gracias.

52voto

Vinze Points 1736

-xms est la mémoire de départ (au démarrage de la VM), -xmx est la mémoire maximale de la VM.

  • eclipse.ini : la mémoire pour la VM exécutant eclipse
  • paramètre jre : la mémoire pour les programmes java exécutés depuis eclipse
  • catalina.sh : la mémoire pour votre serveur tomcat

14voto

bruno conde Points 28120

Tout d'abord, je vous suggère de limiter le problème au composant qui lance l'exception "Out of Memory".

Cela pourrait être :

  1. Eclipse lui-même (ce dont je doute)
  2. Votre candidature en Tomcat

Les paramètres de la JVM -xms y -xmx représentent la "mémoire de départ" et la "mémoire maximale" du tas. Oubliez la "mémoire de départ". Cela ne va pas vous aider maintenant et vous ne devriez changer ce paramètre que si vous êtes sûr que votre application consommera cette quantité de mémoire rapidement.

En production, je pense que le seul paramètre que l'on peut changer est le -xmx sous les fichiers Catalina.sh ou Catalina.bat. Mais si vous testez votre webapp directement à partir d'Eclipse avec un environnement de débogage configuré de Tomcat, vous pouvez simplement aller dans vos "Debug Configurations" > "Apache Tomcat" > "Arguments" > "VM arguments" et définir l'option -xmx là.

Quant à l'optimum -xmx pour 2gb, cela dépend beaucoup de votre environnement et du nombre de requêtes que votre application pourrait prendre. J'essaierais des valeurs de 500mb à 1gb. Vérifiez la limite de la "zone" de mémoire virtuelle de votre système d'exploitation et la limite de la JVM elle-même.

3voto

Andreas Mattisson Points 386

J'ai trouvé 2 problèmes dans notre cas.

  1. La mémoire s'arrêtait et nous étions obligés de régler la taille de la permission de démarrage à une valeur plus élevée. Je suppose qu'il utilisait la mémoire plus vite qu'il ne pouvait l'allouer. Dans notre cas. -XX:PermSize=256m -XX:MaxPermSize=256m

  2. Nous utilisons Clearcase et le plugin de Rational Clearcase SCM (7.0.0.2) a été utilisé dans Eclipse. C'est à cause de ce plugin qu'Eclipse s'est planté. Et pour le moment, nous ne savons pas pourquoi, mais cela pourrait être bon à savoir pour d'autres. J'ai été obligé de le désactiver.

2voto

chro Points 697

Tomcat dans Eclipse n'utilise pas catalina.sh ou bat. Pour configurer la mémoire pour Tomcat géré, utilisez les paramètres VM dans la configuration d'exécution du serveur.

2voto

Adrian Pirvulescu Points 3671

Mon FLashBuilder se bloque tout le temps lorsque j'essaie de publier une nouvelle version ou que j'utilise les fonctions "Marquer les occurrences" et "Lier avec l'éditeur".

J'ai amélioré de manière significative les performances de mon flash en suivant les étapes suivantes http://www.redcodelabs.com/2012/03/eclipse-speed-up-flashbuilder/

Notamment en définissant la configuration suivante dans le FlashBuilder.ini

-vm
C:/jdk1.6.0_25/bin
-startup
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar
–launcher.library
plugins/org.eclipse.equinox.launcher.win32.win32.x86_64_1.1.100.v20110502
-product
org.eclipse.epp.package.jee.product
–launcher.defaultAction
openFile
–launcher.XXMaxPermSize
256M
-showsplash
org.eclipse.platform
–launcher.XXMaxPermSize
256m
–launcher.defaultAction
openFile
-vmargs
-server
-Dosgi.requiredJavaVersion=1.5
-Xmn128m
-Xms1024m
-Xmx1024m
-Xss2m
-XX:PermSize=128m
-XX:MaxPermSize=128m
-XX:+UseParallelGC

Ma configuration matérielle est la suivante : processeur intel i3, 4 Go de DDR3, Windows 7 64 bits.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X