2009-10-08 13 views
5

Considere que tengo un subproceso principal que ejecuta un nuevo Runnable en un subproceso nuevo. Ahora, mientras se está ejecutando el nuevo Thread, la VM Java se queda sin memoria y lanza un OutOfMemoryError.OutOfMemoryError en un subproceso Java separado

¿Qué ocurre? ¿Se detiene el hilo objetivo? ¿Continuará el hilo principal? Cuando el nuevo Thread falla, ¿la máquina virtual recuperará la memoria y permitirá que la ejecución continúe?

Respuesta

7

Uno de los hilos lanzará OutOfMemoryError durante la parte de asignación de new. Para evitar agallas, es probable que haya una cantidad significativa de memoria libre una vez que se produce el error. Entonces, los otros hilos pueden continuar y es improbable que sean OOME por un período.

Si no se detecta el OOME, el hilo se cerrará y se llamará al controlador de excepciones no detectadas. Al salir, el hilo y los objetos asociados estarán disponibles para la recolección de basura como de costumbre (sujeto a que no se haga referencia a ellos por otros medios).

Cuestiones relacionadas