Seleccionar página

Solución error: “java.lang.OutOfMemoryError: unable to create new native thread.”

por | Jul 15, 2011 | GNU / Linux, Java, JBoss AS / JBoss EAP / WildFly

El mensaje de error es el siguiente : «java.lang.OutOfMemoryError: unable to create new native thread.»

Para solucionarlo hay que reducir el tamaño de pila (stack) utilizado, que es la que usan los threads.

Para reducir el tamaño de la pila en la JVM se puede poner la siguiente opción “-Xss64k” en el arranque.
Yo sugiero empezar con 64k, probar la aplicación y si da error(puede lanzar la siguiene exceptión java.lang.StackOverFlowError), incrementar el tamaño de la pila a 128k, o 256k, y seguir probando. El tamaño para la pila por defecto es de 8192k que es un rango muy amplio para test.

(Nota: para JBoss se suele recomendar 128k o 256k, aunque es mejor mirar la documentación para cada versión)

En linux es necesario ponerlo también a nivel de sistema operativo con el mismo valor que la JVM para obtener el mayor beneficio. Para hacer esto usa “ulimit -s “. Ej: “ulimit -s 128″

(Nota: El tamaño de pila se aplicac por usuario, asi que se tiene que modificar en el script de arranque del sistema, o editar el fichero “/etc/security/limits.conf” (en Debian/Ubuntu al menos).

Te puede interesar…

0 comentarios

Enviar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *