2010-09-29 5 views
8

Tengo un programa que a veces arroja OOME, Entiendo que hay un indicador en las opciones de JVM que puedo configurar y cada vez que aparece un cierto error/excepción (como OOME) llama a un script que escribí. La secuencia de comandos dará al usuario una notificación y llamará al programa con un argumento diferente para que no vuelva a obtener OOME.cómo atrapar OutOfMemoryError en JVM y ejecutar un script si está atrapado?

¿Alguien sabe cómo configurar esta bandera? ¿Cuáles son las opciones de JVM que necesito configurar? Miré a todas partes en línea y no pude encontrar la respuesta.

ayúdame por favor! Gracias , Aye

+1

escriba 'java -X' en el símbolo del sistema. Obtendrá una lista de todas las opciones extendidas. Podría ayudar. –

Respuesta

-3

he encontrado una sugerencia en un forum: coger el OOME en su aplicación (como directamente en principal, asumiendo que usted está solo subproceso) y hacer esto en el controlador catch:

catch (OutOfMemoryError not_again) { 
    System.gc(); 
    System.runFinalization(); 
    System.gc(); 
    System.out.println("Your error message"); 
} 

la limpieza de la pila podría liberar suficiente memoria para producir un último Mensajes de error e antes de morir.

+0

gracias, pero la aplicación es muy escasa y no quiero capturarla. Prefiero llamar al archivo .dat de la propia JVM – Aye

+8

, uno pensaría que la JVM intentará algunas rondas de GC antes de lanzar una OOME en sí mismo; esto no garantiza que realmente haga mucho de nada. –

Cuestiones relacionadas