Pourquoi Eclipse se bloque-t-il avec Xmx, XX: MaxPermSize au-dessus de certaines valeurs?

StackOverflow https://stackoverflow.com/questions/1804913

  •  05-07-2019
  •  | 
  •  

Question

Exécution d'Eclipse 3.5.1, JDK 1.6.0_17 sur Windows XP SP3 32 bits avec 3,5 Go de RAM.
Je suis au courant des meilleures pratiques Eclipse , toujours essayant de comprendre eclipse.ini.

Ceci lancera: -Xmx588m et cela ne sera pas: -Xmx589m.
Même chose avec -XX:MaxPermSize. Tout ce qui se trouve au-dessus de -XX:MaxPermSize=140m ne sera pas lancé.
L’écran de la mort est similaire à this (extrait de ici ).

Des idées sur les raisons pour lesquelles cela pourrait se produire?

Était-ce utile?

La solution

Voir ce bogue eclipse .

Le problème général est que jvm nécessite un bloc de mémoire contigu pour cela. Sur Windows, le processus va avoir 2 Go, les autres bibliothèques chargées sont placées dans différentes zones de l’espace mémoire. Si une bibliothèque est placée au milieu, vous pouvez utiliser deux fois moins de taille.

Le programme de lancement Eclipse chargera des dll système afin de créer des graphiques. En particulier, user32.dll peut entraîner le chargement de bibliothèques tierces en fonction de ce qui est installé sur votre ordinateur (vu ici ).

Pour atteindre des limites de mémoire plus élevées, vous pouvez forcer le jvm à être inséré dans un processus distinct à partir du programme de lancement eclipse. Le processus jvm ne chargera ces bibliothèques supplémentaires qu'après que la machine virtuelle aura initialisé sa mémoire. Faites ceci en utilisant un argument -vm pointant vers un javaw.exe:

eclipse -vm C:\jdk\jre\bin\javaw.exe

Autres conseils

Voir aussi ce bogue 203325 pour obtenir des suggestions sur la manière de procéder. surveiller l'utilisation de votre mémoire avec des outils tels que:

  • JConsole
  • Outil de surveillance de la mémoire (outil éclipse)

Remarque: comme commenté ici :

  

Si vous ne déclarez pas la limite de mémoire maximale, elle est laissée au gestionnaire de mémoire du système d'exploitation.

     

Le -Xmx <size> est utile pour programmer un petit appareil comme J2ME.
  Si vous programmez un petit périphérique dont la mémoire est contrainte, vous pouvez utiliser -Xmx la propriété JVM pour émuler le petit périphérique, même si vous utilisez peut-être un PC.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top