You are on page 1of 9

Ampliando el espacio de la zona de intercambio en java

java.lang.OutOfMemoryError: Java heap space


Para resolver Exception in thread "AWT-EventQueue-0" java.lang.OutOfMemoryError: espacio de almacenamiento dinmico de Java Trate de usar "-Xmx" o "-Xms" comando 1. para Eclipse, ve a Ejecutar ... > En la pestaa de argumentos, los argumentos del programa de relleno "-Xmx256m" para expandir la memoria de 64 Mb (por defecto) a 256 2. para la lnea de comandos, utilice "java-Xmx256m [archivo de clase Java]" referencias http://forums.sun.com/thread.jspa?threadID=5299878&tstart=7 http://zeus.cp.eng.chula.ac.th/ ~ cp32/board/viewtopic.php? p = 5348 & sid = aff9fe42462200ec1e370afe5ee85a90

Errores comunes en la configuracin del tamao del montn de Java

Dos opciones de JVM se utilizan a menudo para ajustar el tamao de pila de JVM: -Xmx para el tamao mximo del montn, y -Xms de tamao de la pila inicial. stos son algunos errores comunes que he visto cuando se utilicen:

Falta m, M, g o G al final (se distingue entre maysculas y minsculas). Por ejemplo,


java -Xmx128 BigApp java.lang.OutOfMemoryError: Java heap space

El comando correcto debera ser: java -Xmx128m BigApp . Para ser precisos, -Xmx128 es una opcin vlida para aplicaciones muy pequeas, como HelloWorld. Pero en la vida real, me imagino que realmente quieren decir -Xmx128m

Espacio adicional en las opciones de JVM, o mal uso =. Por ejemplo,

java -Xmx 128m BigApp Invalid maximum heap size: -Xmx Could not create the Java virtual machine. java -Xmx=512m HelloWorld Invalid maximum heap size: -Xmx=512m Could not create the Java virtual machine.

El comando correcto debera ser el java -Xmx128m BigApp , sin espacios en blanco ni =. -X las opciones son diferentes a-tecla D = propiedades del sistema de valores, donde = se utiliza.

Configuracin de slo -Xms opcin de JVM y su valor es mayor que el tamao predeterminado mximo del montn, que es 64m . El mnimo tamao de la pila por defecto parece ser 0 . Por ejemplo,
java -Xms128m BigApp Error occurred during initialization of VM Incompatible initial and maximum heap sizes specified

El comando correcto debera ser java -Xms128m -Xmx128m BigApp . Es una buena idea para establecer el tamao de la pila mnimo y mximo con el mismo valor. En cualquier caso, no dejes que el tamao de la pila mnimos superen el tamao mximo del montn.

Tamao de la pila es mayor que la memoria fsica del equipo. Por ejemplo,
java -Xmx2g BigApp Error occurred during initialization of VM Could not reserve enough space for object heap Could not create the Java virtual machine.

La solucin es hacer que sea ms baja que la memoria fsica: java -Xmx1g BigApp

Utiliza incorrectamente mb como la unidad, donde m o M se debe utilizar en su lugar.


java -Xms256mb -Xmx256mb BigApp Invalid initial heap size: -Xms256mb Could not create the Java virtual machine.

El tamao de la pila es ms grande que JVM piensa lo que usted necesita. Por ejemplo,
java -Xmx256g BigApp Invalid maximum heap size: -Xmx256g The specified size exceeds the maximum representable size. Could not create the Java virtual machine.

La solucin es bajarla a un valor razonable: java -Xmx256m BigApp

El valor no se expresa en nmeros enteros. Por ejemplo,


java -Xmx0.9g BigApp Invalid maximum heap size: -Xmx0.9g Could not create the Java virtual machine.

El comando correcto debera ser el java -Xmx928m BigApp PS: Cmo establecer el tamao de almacenamiento dinmico de Java en Tomcat? Detener el servidor Tomcat, establezca la variable de entorno CATALINA_OPTS , a continuacin, reinicie Tomcat. Mira el archivo tomcat-install/bin/catalina.sh o catalina.bat de cmo esta variable se utiliza. Por ejemplo,
set CATALINA_OPTS=-Xms512m -Xmx512m (Windows, no "" around the value) export CATALINA_OPTS="-Xms512m -Xmx512m" (ksh/bash, "" around the value) setenv CATALINA_OPTS "-Xms512m -Xmx512m" (tcsh/csh, "" around the value)

En catalina.bat o catallina.sh, te habrs dado cuenta CATALINA_OPTS, JAVA_OPTS, o ambos pueden ser utilizados para especificar las opciones de JVM Tomcat. Cul es la diferencia entre CATALINA_OPTS y JAVA_OPTS? El CATALINA_OPTS nombre es especfico para un contenedor de servlets Tomcat, mientras que JAVA_OPTS pueden ser utilizados por otras aplicaciones de java (por ejemplo, JBoss). Dado que las variables de entorno son compartidos por todas las aplicaciones, no queremos que Tomcat para recoger inadvertidamente las opciones de JVM destinadas a otras aplicaciones. Yo prefiero usar CATALINA_OPTS. Cmo establecer el tamao de almacenamiento dinmico de Java en JBoss? Detener el servidor JBoss, editar $JBOSS_HOME/bin/run.conf , a continuacin, reiniciar el servidor JBoss. Puede cambiar la lnea con JAVA_OPTS a algo as como:
JAVA_OPTS="-server -Xms128m -Xmx128m"

Cmo establecer el tamao de almacenamiento dinmico de Java en Eclipse? Tienes 2 opciones: 1. Editar eclipse-home/eclipse.ini ser algo como lo siguiente y reinicie Eclipse.
-vmargs -Xms64m -Xmx256m

2. O, usted puede ejecutar el comando eclipse con opciones al final. Cualquier cosa despus de la vmargs sern tratados como opciones de JVM y se pasa directamente a la JVM. Opciones JVM se especifica en la lnea de comandos de esta manera siempre reemplazar los eclipse.ini. Por ejemplo,
eclipse -vmargs -Xms64m -Xmx256m

Cmo establecer el tamao de almacenamiento dinmico de Java en NetBeans? Salida de NetBeans, editar el archivo netbeans-install/etc/netbeans.conf . Por ejemplo,

netbeans_default_options="-J-Xms512m -J-Xmx512m -J-XX:PermSize=32m -JXX:MaxPermSize=128m -J-Xverify:none

Cmo establecer el tamao de almacenamiento dinmico de Java en Apache Ant? Variable de entorno ANT_OPTS . Mira el archivo $ANT_HOME/bin/ant o %ANT_HOME %\bin\ant.bat , de cmo esta variable es utilizada por Ant tiempo de ejecucin.
set ANT_OPTS=-Xms512m -Xmx512m (Windows) export ANT_OPTS="-Xms512m -Xmx512m" (ksh/bash) setenv ANT_OPTS "-Xms512m -Xmx512m" (tcsh/csh)

Cmo establecer el tamao de almacenamiento dinmico de Java en jEdit? jEdit es una aplicacin Java, y, bsicamente, es necesario establecer mnimos / mximos montn de opciones de tamao de JVM cuando se ejecuta el comando java. jEdit por defecto se ejecuta con un tamao mximo predeterminado de 64m montn. Cuando se trabaja en los archivos de gran tamao, es probable que obtenga los siguientes errores:
java.lang.OutOfMemoryError: Java heap space at java.lang.String.concat(String.java:2001) at org.gjt.sp.jedit.buffer.UndoManager.contentInserted(UndoManager.java:160) at org.gjt.sp.jedit.Buffer.insert(Buffer.java:1139) at org.gjt.sp.jedit.textarea.JEditTextArea.setSelectedText(JEditTextArea.jav a:2052) at org.gjt.sp.jedit.textarea.JEditTextArea.setSelectedText(JEditTextArea.jav a:2028) at org.gjt.sp.jedit.Registers.paste(Registers.java:263)

Cmo lo arreglo? Si hace clic en un icono del escritorio o del men Inicio para empezar a jEdit: haga clic en el icono u opcin de men, ver su propiedad, y se puede ver su objetivo es algo as como:
C:\jdk6\bin\javaw.exe -jar "C:\jedit\jedit.jar"

Puede cambiar la lnea a:

C:\jdk6\bin\javaw.exe -Xmx128m -Xms128m -jar "C:\jedit\jedit.jar"

Si ejecuta un script para iniciar jEdit: slo tiene que aadir estas opciones JVM a la lnea de java dentro del archivo de script:
java -Xmx128m -Xms128m -jar jedit.jar

Si usted comienza a jEdit mediante la ejecucin de comandos java: slo tiene que aadir estas opciones JVM al comando java:
java -Xmx128m -Xms128m -jar jedit.jar

Tenga en cuenta que cuando se ejecuta con java-jar opcin, nada despus de -jar jar-file sern tratados como argumentos de aplicacin. As que siempre hay que poner las opciones de JVM antes de -jar . De lo contrario, obtendr el error:
C:\jedit>java -jar jedit.jar -Xmx128m Unknown option: -Xmx128m Usage: jedit [ ] [ ] C:\jedit>java -jar jedit.jar -Xmx128m Unknown option: -Xmx128m Usage: jedit [ ] [ ] C:\jedit>java -jar jedit.jar -Xmx128m Unknown option: -Xmx128m Usage: jedit [ ] [ ]

Cmo establecer el tamao de almacenamiento dinmico de Java en JavaEE SDK/J2EE SDK / Glassfish / Sun Java System Application Server? Detener el servidor de aplicaciones, editar $GLASSFISH_HOME/domains/domain1/config/domain.xml , buscar el nombre de elemento XML java-config y jvm-options . Por ejemplo,
<java-config suffix="..."> <jvm-options>-Xmx512m</jvm-options> <jvm-options>-XX:NewRatio=2</jvm-options> <jvm-options>-XX:MaxPermSize=128m</jvm-options> ...</java-config>

Tambin puede cambiar esta configuracin en la consola de administracin basada en web, por lo general a http://localhost:4848/, o https://localhost:4848/. Vaya a Servidor de aplicaciones en la parte superior del panel de la izquierda, y luego en el panel derecho, haga clic en Configuracin JVM -> Opciones de JVM, y ver una lista de las actuales opciones de la JVM. Usted puede agregar nuevos y modificar los ya existentes all. Otra opcin es utilizar su interfaz de lnea de comandos (CLI) de comando de herramientas, tales como:
./asadmin help create-jvm-options ./asadmin help delete-jvm-options

Pueden ser un poco difcil de usar de forma manual, pero son muy adecuados para los scripts automatizados.

Usted puede tratar de comenzar con ms memoria, usando la opcin-Xmx, por ejemplo,
java -Xmx2048m [whatever you'd have written before]

Esto utilizar hasta 2 gigas de memoria.

Aumentar el tamao de memoria de la mquina virtual en Java


Submitted by avali2 on Sb, 02/07/2009 - 12:56

Java Standard Edition

En Java, hay varios parmetros para controlar el tamao inicial y el tamao mximo que puede tomar la mquina virtual. Adems, hay que tener en cuenta el tipo de memoria sobre el que se quiere actuar: heap, nonheap (PermGen). Los valores por defecto que se dan corresponden a mquina virtuales de Sun, y son orientativos, porque pueden cambiar entre versiones de la mquina virtual. Los parmetros son los siguientes, fijndose a 128Mb. * -Xms128m: Tamao de inicio de la mquina virtual de Java a 128Mb. El valor por defecto son 64Mb. Si se aumenta este valor, se elimina el tiempo que se tardara en aumentar el tamao en memoria de la mquina virtual si se llegara el caso de que se necesitara ms memoria, por lo que aumentara el rendimiento en los casos que la aplicacin haga uso intensivo de la memoria. * -Xmx128m: Tamao mximo de la mquina virtual de Java a 128Mb. El valor por defecto son 128Mb. Si la aplicacin supera el tamao mximo de memoria que marca este parmetro, se lanza la excepcin java.lang.OutOfMemoryError. No conviene asignar a este parmetro el mximo de la memoria de la mquina porque si ya no queda memoria fsica disponible (por la que usa el sistema operativo u otras aplicaciones) se pueden producir escrituras en memoria asignada a otros programas y provocar un autntico lo. * -XX:PermSize=128m: Tamao de inicio de la memoria de tipo PermGen a 128Mb. Arrancar la mquina virtual con un valor superior al por defecto agiliza la carga de aplicaciones, sobre todo en el caso de aplicaciones que hagan uso intensivo de este tipo de memoria (Spring, Hibernate) * -XX:MaxPermSize=128m: Tamao mximo de la memoria de tipo PermGen a 128Mb. El valor por defecto son 64Mb. Si la aplicacin supera el tamao mximo de memoria para este tipo que marca este parmetro, se lanza la excepcin java.lang.OutOfMemoryError: PermGen space. El valor necesario para este parmetro siempre suele ser menor que el de la memoria de tipo heap.

Si se quiere especificar un valor distinto de 128Mb, que se utiliza para todos los parmetros como ejemplo para simplificar, bastara con sustituir el valor 128 del parmetro con el que se desee, siempre que sean mltiplos de 2 (64, 128, 256, 512, 768, 1024, 2048) Conocidos los tipos de memoria y los parmetros que los controlan, ahora viene la pregunta, cmo especifico estos valores para mi aplicacin? La respuesta es la misma para todos los casos: Los valores se especifican como parmetros en el arranque de la mquina virtual que ejecutar la aplicacin. La diferencia estribar en cmo se arranca la aplicacin: con un script, desde lnea de comandos, mediante ant A continuacin se dan distintos ejemplos de modificacin de la memoria de distinta forma. No es necesario especificar todos los parmetros, se pueden especificar todos o ninguno (y se tomaran los valores por defecto) Lnea de comandos * Ejecucin de un jar: java -Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -jar example.jar * Ejecucin de una clase: java -Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m com.programacionenjava.examples.MemoryExample Ant Script Si el arranque de la mquina virtual se produce en un script, hay que editar el script y aadir estos parmetros en la sentencia de arranque. El siguiente ejemplo muestra cmo aadir estos parmetros en el script de arranque de un Tomcat. * En Windows: set JAVA_OPTS=%JAVA_OPTS% -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m * En Linux: JAVA_OPTS=$JAVA_OPTS -Xms128m -Xmx512m -XX:PermSize=128m -XX:MaxPermSize=256m Por ltimo, recordamos que resolver el problema de una excepcin de tipo java.lang.OutOfMemoryError simplemente aumentando el tamao de la memoria virtual puede retrasar el problema pero no evitarlo si el problema es una fuga de memoria. Puedes encontrar ms informacin aqu.

Como cambiar el mnimo y mximo de memoria para la maquina virtual de Java en Netbeans?

By Sebastian Maldonado on abr 16, 2008


Hace un tiempo me preguntaron como se puede aumentar el mximo de memoria para la mquina virtual de java en netbeans, supuse que deba hacerse con algn panel y de manera grfica, pero resulta que no existe tal opcin, as que hay que ver que se puede hacer al respecto (una de las magias del cdigo abierto, que todos pueden colaborar). Adems de estar muy ocupado con otras cosas nunca he visto el cdigo de netbeans, as que me voy a demorar, por mientras voy a dejar unas instrucciones de como se puede hacer para cambiar y arrancarlo manualmente. Instrucciones. Identifique la carpeta en donde se ha instalado netbeans, busque dentro de esta carpeta el archivo llamado netbeans.conf este archivo es el que posee la configuracin bsica y los tamaos de memoria con que es llamada de forma inicial la maquina virtual (este archivo se encuentra en general en la carpeta etc del archivo donde est instalado netbeans), en este archivo busque la lnea en donde se encuentran las configuraciones bsicas de arranque de netbeans que sera algo as. netbeans_default_options="-J-Dcom.sun.aas.installRoot=\\"C:\\Archivos de programa\\glassfish-v2ur1\\" -J-client -J-Xss2m -J-Xms32m -JXX:PermSize=32m -J-XX:MaxPermSize=200m -J-Xverify:none -JDapple.laf.useScreenMenuBar=true" (S me descubrieron... est en windows) Se encontrarn 2 opciones que hay que borrar, estas son J-XX:PermSize=32m -JXX:MaxPermSize=200m una vez eliminadas estas lneas se puede proceder a ejecutar netbeans con ms memoria para la mquina virtual, usando en el caso de Windows el comando netbeans.exe -J-Xms32m -J-Xmx256m

Donde J-Xms32m coloca el mnimo de la mquina virtual como 32 megabytes, y J-Xmx256m que coloca el mximo de la mquina virtual como 256 megabytes, cambien el 32 o el 256 segn como les acomode para ejecutar su programa. En el caso de linux o Solaris se utiliza el comando ./netbeans -J-Xms32m -J-Xmx256m Con los mismos significados de los elementos que alteran la ejecucin del programa. De esta forma se alteran los elementos de la mquina virtual.

Ampliando el espacio de la zona de intercambio en java a nivel de consola


start javaw -Xms128m -Xmx1024m -jar CargarArchivos.jar java -Xms32m -Xmx512m -jar CargarArchivos.jar

You might also like