2010-06-22 8 views
7

Ich habe eine .JAR, die anscheinend zu viel Speicher verbraucht, und löst eine Ausnahme "Java-Heap-Speicher" (oder etwas Ähnliches).Java-Heap-Speicher Xmx Xms-Parameter ignoriert

Also versuchte ich die .JAR über das CMD wie folgt ausgeführt werden:

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

Das ist nicht das Problem zu lösen hat. Derselbe Fehler. Jetzt, als ich die Registerkarte Prozesse im Windows-Task-Manager überprüfte, bemerkte ich, dass der Prozess meines Jar viel weniger Speicher hatte als das, was ich verlangte (dasselbe wie das Ausführen ohne die Parameter).

Warum ignoriert es die Parameter?

Auch ich denke, die Ausnahme wird um die Zeit geworfen, die der Prozess 100 MB Speicherverbrauch erreicht. Ist es möglich, dass der GC versucht, den Speicher freizugeben, und das ist das Problem? Gibt es einen Parameter, den ich für den GC einstellen kann, um das zu verhindern?

Danke, Malki :)

+0

* "... löst eine Ausnahme" Java Heap Space "(oder etwas ähnliches)." * Wie ... hilfreich. Was ist die * actual * Ausnahme? –

Antwort

23

Der Befehl

javaw -jar MyJar.jar -Xms64m -Xmx128m 

wird -Xms verwenden ... und -Xmx ... als Parameter an die "main (String [] args)" -Methode.
Parameter - muss die JVM vor dem -jar Teil übergeben werden:

javaw -Xms64m -Xmx128m -jar MyJar.jar 

Der Grund dafür gesehen werden kann, wenn wir „java -version“ ausführen:

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

Wo Ihre Parameter -Xms ... und -Xmx ... sind Optionen für die JVM.