如何在JVM中捕获OutOfMemoryError并在捕获时运行脚本?

时间:2010-09-29 11:26:25

标签: java jvm out-of-memory jvm-arguments

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

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

请帮帮我! 谢谢, 埃

2 个答案:

答案 0 :(得分:13)

答案 1 :(得分:-3)

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

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

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