2011-06-06 171 views
9

Tengo un escenario de archivos de carga en mi proyecto. Cuando intento cargar los archivos de gran tamaño, me da un error de OutOfMemory. Ese error está relacionado con el tamaño del montón de Java.Cómo aumentar el tamaño del almacenamiento dinámico para el servidor jBoss

¿Cómo se puede aumentar el tamaño del almacenamiento dinámico en Java y qué archivo debo modificar para esto? Estoy usando el servidor jboss 5.1 para ejecutar mi aplicación.

+0

posible duplicado -.. http://stackoverflow.com/questions/1565388/increase-heap-size-in-java – mre

Respuesta

3

Use -Xms y las opciones de línea de comandos -Xmx cuando runing java:

-Xms<size>  set initial Java heap size 
-Xmx<size>  set maximum Java heap size 

Para obtener más ayuda java -X tipo de línea de comandos.

23

Puede establecerlo como argumentos de JVM de la manera habitual, p. -Xms1024m -Xmx2048m para un mínimo de 1 GB y un montón máximo de 2 GB. JBoss utilizará la variable de entorno JAVA_OPTS incluir argumentos adicionales de JVM, se puede especificar en el archivo /bin/run.conf.bat:

set "JAVA_OPTS=%JAVA_OPTS% -Xms1024m -Xmx2048m" 

Sin embargo, esto es más una solución que una solución real. Si varios usuarios al mismo tiempo cargan archivos grandes, tarde o temprano alcanzará el mismo problema. Tendría que seguir aumentando la memoria por nada. En su lugar, debe configurar su analizador de carga de archivos para almacenar el archivo cargado en el disco temporal en lugar de almacenarlo por completo en la memoria. Mientras no esté claro qué analizador está utilizando, no se puede dar una respuesta adecuada. Sin embargo, más que a menudo Apache Commons FileUpload se utiliza debajo de las cubiertas, entonces debe leer la documentación con "tamaño de umbral" como palabra clave para configurar el límite de memoria para los archivos cargados. Cuando el tamaño del archivo excede el umbral, se escribiría en el disco.

+2

1 El consejo _No_ almacenar todo el archivo en la memoria es bueno. –

3

Mire en la carpeta bin JBoss para el archivo run.bat (run.sh en Unix)

busque la línea set JAVA_OPTS, (o simplemente JAVA_OPTS en Unix) al final de esa línea añadir -Xmx512m . Cambie el número a la cantidad de memoria que desea asignar a JBoss.

Si está utilizando una secuencia de comandos personalizada para iniciar su instancia de jboss, también puede agregar la opción establecer JAVA_OPTS allí.

3

Edite la siguiente entrada en el archivo run.conf. Pero si usted tiene varias JVM que se ejecutan en el mismo JBoss, es posible que desee ejecutarlo a través de argumentos de línea de comandos de -Xms2g -Xmx4g (o lo que sus/configuración de memoria de arranque máximo preferido son.

if [ "x$JAVA_OPTS" = "x" ]; then 
    JAVA_OPTS="-Xms2g -Xmx4g -XX:MaxPermSize=256m -Dorg.jboss.resolver.warning=true 
2

En JBoss 8 y después, ir a /bin/standalone.conf y poner sus JAVA_OPTS allí, con todo lo que necesita

Cuestiones relacionadas