10

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

1
  • 1
    type 'java -X' at the command prompt. You will get a list of all the extended options. Might help. Commented Sep 29, 2010 at 11:29

2 Answers 2

15

-XX:OnOutOfMemoryError="cmd args;cmd args"

From: http://www.oracle.com/technetwork/java/javase/tech/vmoptions-jsp-140102.html#DebuggingOptions

Sign up to request clarification or add additional context in comments.

1 Comment

wow, that one looks useful, I will check it out now. thanks :)
-4

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.

2 Comments

thanks, but the application is very sparse and I don't want to catch it inside I prefer to call .dat file from the JVM itself
one would think that the JVM would attempt a few rounds of GC before throwing an OOME itself; this isn't guaranteed to really do much of anything.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.