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

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).

Conocimiento Open Source 

Desde siempre intentamos aplicar la filosofía Open Source también con el conocimiento, por ello nació el Blog Open Source, donde nuestros desarrolladores comparten notas, consejos y tutoriales sobre tecnología y desarrollo, soluciones a problemas diarios, bugs o cualquier información que creemos, puede ser interesante.

0 comentarios

Enviar un comentario

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