Preview only show first 10 pages with watermark. For full document please download

Ampliando El Espacio De La Zona De Inter Cam Bio En Java

OutOfMemoryError: espacio de almacenamiento dinámico de Java Trate de usar "-Xmx" o "-Xms" comando 1. para Eclipse, ve a Ejecutar ... > En la pestaña de argumentos, los argumentos del programa de relleno "-Xmx256m" para expandir la memoria de 64 Mb (por defecto) a 256 2. para la línea de comandos, utilice ...

   EMBED

  • Rating

  • Date

    February 2017
  • Size

    152.7KB
  • Views

    4,216
  • Categories


Share

Transcript

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 dinámico de Java Trate de usar "-Xmx" o "-Xms" comando 1. para Eclipse, ve a Ejecutar ... > En la pestaña de argumentos, los argumentos del programa de relleno "-Xmx256m" para expandir la memoria de 64 Mb (por defecto) a 256 2. para la línea 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 configuración del tamaño del montón de Java Dos opciones de JVM se utilizan a menudo para ajustar el tamaño de pila de JVM: -Xmx para el tamaño máximo del montón, y -Xms de tamaño 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 mayúsculas y minúsculas). Por ejemplo, java -Xmx128 BigApp java.lang.OutOfMemoryError: Java heap space El comando correcto debería ser: java -Xmx128m BigApp . Para ser precisos, -Xmx128 es una opción válida para aplicaciones muy pequeñas, 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 debería 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. • Configuración de sólo -Xms opción de JVM y su valor es mayor que el tamaño predeterminado máximo del montón, que es 64m . El mínimo tamaño 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 debería ser java -Xms128m -Xmx128m BigApp . Es una buena idea para establecer el tamaño de la pila mínimo y máximo con el mismo valor. En cualquier caso, no dejes que el tamaño de la pila mínimos superen el tamaño máximo del montón. • Tamaño de la pila es mayor que la memoria física 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 solución es hacer que sea más baja que la memoria física: 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 tamaño de la pila es más 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 solución es bajarla a un valor razonable: java -Xmx256m BigApp • El valor no se expresa en números enteros. Por ejemplo, java -Xmx0.9g BigApp Invalid maximum heap size: -Xmx0.9g Could not create the Java virtual machine. El comando correcto debería ser el java -Xmx928m BigApp PS: Cómo establecer el tamaño de almacenamiento dinámico de Java en Tomcat? Detener el servidor Tomcat, establezca la variable de entorno CATALINA_OPTS , a continuación, reinicie Tomcat. Mira el archivo tomcat-install/bin/catalina.sh o catalina.bat de cómo 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 habrás dado cuenta CATALINA_OPTS, JAVA_OPTS, o ambos pueden ser utilizados para especificar las opciones de JVM Tomcat. ¿Cuál es la diferencia entre CATALINA_OPTS y JAVA_OPTS? El CATALINA_OPTS nombre es específico 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. Cómo establecer el tamaño de almacenamiento dinámico de Java en JBoss? Detener el servidor JBoss, editar $JBOSS_HOME/bin/run.conf , a continuación, reiniciar el servidor JBoss. Puede cambiar la línea con JAVA_OPTS a algo así como: JAVA_OPTS="-server -Xms128m -Xmx128m" Cómo establecer el tamaño de almacenamiento dinámico 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 después de la vmargs serán tratados como opciones de JVM y se pasa directamente a la JVM. Opciones JVM se especifica en la línea de comandos de esta manera siempre reemplazará los eclipse.ini. Por ejemplo, eclipse -vmargs -Xms64m -Xmx256m Cómo establecer el tamaño de almacenamiento dinámico 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 Cómo establecer el tamaño de almacenamiento dinámico de Java en Apache Ant? Variable de entorno ANT_OPTS . Mira el archivo $ANT_HOME/bin/ant o %ANT_HOME %\bin\ant.bat , de cómo esta variable es utilizada por Ant tiempo de ejecución. set ANT_OPTS=-Xms512m -Xmx512m (Windows) export ANT_OPTS="-Xms512m -Xmx512m" (ksh/bash) setenv ANT_OPTS "-Xms512m -Xmx512m" (tcsh/csh) Cómo establecer el tamaño de almacenamiento dinámico de Java en jEdit? jEdit es una aplicación Java, y, básicamente, es necesario establecer mínimos / máximos montón de opciones de tamaño de JVM cuando se ejecuta el comando java. jEdit por defecto se ejecuta con un tamaño máximo predeterminado de 64m montón. Cuando se trabaja en los archivos de gran tamaño, 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) ¿Cómo lo arreglo? Si hace clic en un icono del escritorio o del menú Inicio para empezar a jEdit: haga clic en el icono u opción 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 línea a: C:\jdk6\bin\javaw.exe -Xmx128m -Xms128m -jar "C:\jedit\jedit.jar" Si ejecuta un script para iniciar jEdit: sólo tiene que añadir estas opciones JVM a la línea de java dentro del archivo de script: java -Xmx128m -Xms128m -jar jedit.jar Si usted comienza a jEdit mediante la ejecución de comandos java: sólo tiene que añadir estas opciones JVM al comando java: java -Xmx128m -Xms128m -jar jedit.jar Tenga en cuenta que cuando se ejecuta con java-jar opción, nada después de -jar jar-file serán tratados como argumentos de aplicación. 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 [ ] [ ] Cómo establecer el tamaño de almacenamiento dinámico 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, -Xmx512m -XX:NewRatio=2 -XX:MaxPermSize=128m ... También puede cambiar esta configuración en la consola de administración 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 Configuración 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 opción es utilizar su interfaz de línea de comandos (CLI) de comando de herramientas, tales como: ./asadmin help create-jvm-options ./asadmin help delete-jvm-options Pueden ser un poco difícil de usar de forma manual, pero son muy adecuados para los scripts automatizados. Usted puede tratar de comenzar con más memoria, usando la opción-Xmx, por ejemplo, java -Xmx2048m [whatever you'd have written before] Esto utilizará hasta 2 gigas de memoria. Aumentar el tamaño de memoria de la máquina virtual en Java Submitted by avali2 on Sáb, 02/07/2009 - 12:56 • Java Standard Edition En Java, hay varios parámetros para controlar el tamaño inicial y el tamaño máximo que puede tomar la máquina virtual. Además, 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 máquina virtuales de Sun, y son orientativos, porque pueden cambiar entre versiones de la máquina virtual. Los parámetros son los siguientes, fijándose a 128Mb. * -Xms128m: Tamaño de inicio de la máquina virtual de Java a 128Mb. El valor por defecto son 64Mb. Si se aumenta este valor, se elimina el tiempo que se tardaría en aumentar el tamaño en memoria de la máquina virtual si se llegara el caso de que se necesitara más memoria, por lo que aumentaría el rendimiento en los casos que la aplicación haga uso intensivo de la memoria. * -Xmx128m: Tamaño máximo de la máquina virtual de Java a 128Mb. El valor por defecto son 128Mb. Si la aplicación supera el tamaño máximo de memoria que marca este parámetro, se lanza la excepción java.lang.OutOfMemoryError. No conviene asignar a este parámetro el máximo de la memoria de la máquina porque si ya no queda memoria física disponible (por la que usa el sistema operativo u otras aplicaciones) se pueden producir escrituras en memoria asignada a otros programas y provocar un auténtico lío. * -XX:PermSize=128m: Tamaño de inicio de la memoria de tipo PermGen a 128Mb. Arrancar la máquina 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: Tamaño máximo de la memoria de tipo PermGen a 128Mb. El valor por defecto son 64Mb. Si la aplicación supera el tamaño máximo de memoria para este tipo que marca este parámetro, se lanza la excepción java.lang.OutOfMemoryError: PermGen space. El valor necesario para este parámetro 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 parámetros como ejemplo para simplificar, bastaría con sustituir el valor 128 del parámetro con el que se desee, siempre que sean múltiplos de 2 (64, 128, 256, 512, 768, 1024, 2048…) Conocidos los tipos de memoria y los parámetros que los controlan, ahora viene la pregunta, ¿cómo especifico estos valores para mi aplicación? La respuesta es la misma para todos los casos: Los valores se especifican como parámetros en el arranque de la máquina virtual que ejecutará la aplicación. La diferencia estribará en cómo se arranca la aplicación: con un script, desde línea de comandos, mediante ant… A continuación se dan distintos ejemplos de modificación de la memoria de distinta forma. No es necesario especificar todos los parámetros, se pueden especificar todos o ninguno (y se tomarían los valores por defecto) Línea de comandos * Ejecución de un jar: java -Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m -jar example.jar * Ejecución de una clase: java -Xms128m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m com.programacionenjava.examples.MemoryExample Ant Script Si el arranque de la máquina virtual se produce en un script, hay que editar el script y añadir estos parámetros en la sentencia de arranque. El siguiente ejemplo muestra cómo añadir estos parámetros 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 excepción de tipo java.lang.OutOfMemoryError simplemente aumentando el tamaño de la memoria virtual puede retrasar el problema pero no evitarlo si el problema es una fuga de memoria. Puedes encontrar más información aquí. ¿Como cambiar el mínimo y máximo 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 máximo de memoria para la máquina virtual de java en netbeans, supuse que debía hacerse con algún panel y de manera gráfica, pero resulta que no existe tal opción, así que hay que ver que se puede hacer al respecto (una de las magias del código abierto, que todos pueden colaborar). Además de estar muy ocupado con otras cosas nunca he visto el código 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 configuración básica y los tamaños 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 línea en donde se encuentran las configuraciones básicas de arranque de netbeans que sería 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 encontrarán 2 opciones que hay que borrar, estas son J-XX:PermSize=32m -JXX:MaxPermSize=200m una vez eliminadas estas líneas se puede proceder a ejecutar netbeans con más memoria para la máquina virtual, usando en el caso de Windows el comando netbeans.exe -J-Xms32m -J-Xmx256m Donde –J-Xms32m coloca el mínimo de la máquina virtual como 32 megabytes, y –J-Xmx256m que coloca el máximo de la máquina virtual como 256 megabytes, cambien el 32 o el 256 según 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 ejecución del programa. De esta forma se alteran los elementos de la máquina 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