IBM JVM中是否存在类似“-XX:OnError”或“-XX:OnOutOfMemoryError”的内容?

时间:2010-08-12 11:41:16

标签: java jvm jvm-arguments

Java HotSpot VM选项中有以下两个选项:

-XX:OnError="<cmd args>;<cmd args>" Run user-defined commands on fatal error. (Introduced in 1.4.2 update 9.) 

-XX:OnOutOfMemoryError="<cmd args>; 
<cmd args>" Run user-defined commands when an OutOfMemoryError is first thrown. (Introduced in 1.4.2 update 12, 6) 

据我所知,IBM JVM中没有这样的选项 这是对的吗?

如果生成了堆转储,我需要调用一些shell脚本 最简单的方法是什么?

3 个答案:

答案 0 :(得分:5)

IBM J9 JDK通过-Xdump flag提供上述功能;这是注册转储代理的首选方式。

配置JVM以在OOME上生成堆转储的典型方法是捕获应用程序或JVM抛出的所有内存不足错误,并准备转储“walk”(使用堆检查器)。 / p>

-Xdump:system+heap+java:events=systhrow+user,filter=java/lang/OutOfMemoryError,request=exclusive+prepwalk+compact

价:Eclipse Memory Analyzer Guide

也可以使用JAVA_DUMP_OPTS environment variable。有关详细信息,请参阅IBM JDK diagnostics guide

修改

为了在OOME上运行命令,需要在-Xdump选项中指定the tool option

答案 1 :(得分:3)

-Xdump是你的朋友,非常强大。

对于您的OOM案例,例如:

“ - Xdump:刀具:事件=扔,滤波器= *的OutOfMemoryError,EXEC = cmd_to_run

答案 2 :(得分:0)

我希望IBM的JVM支持相同的标志,因为如果我没记错的话,它是Sun JVM的检测版本。您是否有可能比较主要版本的Java之间的命令行选项? (即Sun 1.6与IBM 1.4.2相比?)

如果找不到标志的解决方案,则可以利用IBM JVM通过附加转储文件的完整路径来更新文件/tmp/dump-locations这一事实。自上次运行以来,cron作业可以在触摸该文件时运行您的脚本。