简体   繁体   中英

How to catch OutOfMemoryError in JVM and run a script if it's caught?

I have a program that sometimes throw OOME, I understand that there is a flag in the JVM options that I can set and whenever a certain Error/Exception appears (such as OOME) it calls a script I wrote. The script will give the user a notification and will call a the program with a different argument so it won't get OOME again.

does anyone know how to set this flag? what is the JVM options I need to set? I looked everywhere on line and couldn't find the answer.

help me please! Thanks, Aye

I found one suggestion in a forum : catch the OOME in your application (like directly in main, assuming you're single threaded) and do this in the catch handler:

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

Cleaning up the heap might free just enough memory to produce a last error message before dying.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM