10

我有一个有时会抛出 OOME 的程序,我知道 JVM 选项中有一个可以设置的标志,并且每当出现某个错误/异常(例如 OOME)时,它都会调用我编写的脚本。该脚本将给用户一个通知,并使用不同的参数调用程序,这样它就不会再次获得 OOME。

有谁知道如何设置这个标志?我需要设置哪些 JVM 选项?我在网上到处找,找不到答案。

请帮帮我!谢谢,是的

4

2 回答 2

15

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

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

于 2010-09-29T11:31:34.130 回答
-4

我在论坛中找到了一个建议:在您的应用程序中捕获 OOME(如直接在 main 中,假设您是单线程的)并在 catch 处理程序中执行此操作:

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

清理堆可能会释放足够的内存以在死前产生最后一条错误消息。

于 2010-09-29T11:34:17.760 回答