2010-06-22 26 views
7

Tengo un .JAR que aparentemente consume demasiada memoria y arroja una excepción "Java heap space" (o algo similar).Java Heap space Xmx Xms parámetros ignorados

así que traté de ejecutar el .JAR a través del CMD así:

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

eso no resuelve el problema. Mismo error. Ahora, cuando revisé la pestaña Procesos en el administrador de tareas de Windows, noté que el proceso de mi jar tiene mucha menos memoria de la que pedí (igual que ejecutarlo sin los parámetros).

¿Por qué está ignorando los parámetros?

Además, creo que la excepción se produce cuando el proceso alcanza los 100mb de uso de memoria. ¿Es posible que el GC esté tratando de liberar la memoria y eso es lo que causa el problema? ¿Hay algún parámetro que pueda establecer para que el GC lo evite?

Gracias método, Malki :)

+0

* "... arroja una excepción" espacio de pila de Java "(o algo similar)." * Cómo ... útil. ¿Cuál es la excepción * actual * lanzada? –

Respuesta

23

El Comando

javaw -jar MyJar.jar -Xms64m -Xmx128m 

utilizará -Xms ... y ... -Xmx como parámetros a los "principales (args String [])".
Parámetros a la JVM se debe pasar antes de que la parte jar:

javaw -Xms64m -Xmx128m -jar MyJar.jar 

La razón de esto puede ser visto cuando ejecutamos "java -version":

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

Donde sus parámetros -Xms ... y -Xmx ... son opciones para la JVM.

Cuestiones relacionadas