2010-06-22 5 views
7

J'ai un .JAR qui utilise apparemment trop de mémoire et génère une exception "Java heap space" (ou quelque chose de similaire).Java heap space Paramètres Xmx Xms ignorés

J'ai essayé de lancer le .JAR via le CMD comme ceci:

C:\MyFolder>javaw -jar MyJar.jar -Xms64m -Xmx128m 

Cela n'a pas résolu le problème. Même erreur Maintenant, quand j'ai vérifié l'onglet Processus dans le gestionnaire de tâches de Windows, j'ai remarqué que le processus de mon pot a beaucoup moins de mémoire que ce que j'ai demandé (même chose que de l'exécuter sans les paramètres).

Pourquoi ignore-t-il les paramètres?

En outre, je pense que l'exception est levée au moment où le processus atteint 100 Mo d'utilisation de la mémoire. Est-il possible que le GC essaye de libérer la mémoire et c'est ce qui cause le problème? Y at-il un paramètre que je peux définir pour le GC pour empêcher cela? méthode

Merci, Malki :)

+0

* "... déclenche une exception" Java heap space "(ou quelque chose de similaire)." * How .... helpful. Quelle est l'exception * réelle * lancée? –

Répondre

23

La commande

javaw -jar MyJar.jar -Xms64m -Xmx128m 

utilisera -Xms ... et -Xmx ... en tant que paramètres aux "principaux (String [] args)".
Paramètres à la machine virtuelle Java doit être transmis avant la partie jar:

javaw -Xms64m -Xmx128m -jar MyJar.jar 

La raison qui peut être vu quand nous exécutons « java -version »:

Usage: java [-options] class [args...] 
      (to execute a class) 
    or java [-options] -jar jarfile [args...] 
      (to execute a jar file) 

Où vos paramètres -Xms ... et -Xmx ... sont des options de la JVM.

Questions connexes