2010-06-22 17 views
7

Possiedo uno .JAR che apparentemente consuma troppa memoria e genera un'eccezione "Java heap space" (o qualcosa di simile).Spazio heap Java Parametri Xmx Xms ignorati

Così ho provato a fare funzionare il .JAR tramite il CMD in questo modo:

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

che non ha risolto il problema. Lo stesso errore. Ora, quando ho controllato la scheda Processi nel task manager di Windows, ho notato che il processo del mio jar ha molto meno memoria di quello che ho chiesto (lo stesso che eseguirlo senza i parametri).

Perché ignorare i parametri?

Inoltre, penso che l'eccezione venga generata nel momento in cui il processo raggiunge 100mb di utilizzo della memoria. È possibile che il GC stia cercando di liberare la memoria e questo è ciò che causa il problema? C'è un parametro che posso impostare per il GC per impedirlo?

Grazie, Malki :)

+0

* "... genera un'eccezione" Java heap space "(o qualcosa di simile)." * In che modo .... utile. Qual è l'eccezione * effettiva * generata? –

risposta

23

Il Comando

javaw -jar MyJar.jar -Xms64m -Xmx128m 

utilizzerà -Xms ... e -Xmx ... come parametri per il "main (String [] args)" metodo.
Parametri al la JVM deve essere passato prima che la parte -jar:

javaw -Xms64m -Xmx128m -jar MyJar.jar 

La ragione di ciò può essere visto quando eseguiamo "java -version":

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

Dove i parametri -Xms ... e -Xmx ... sono opzioni per la JVM.

Problemi correlati