-XX:OnOutOfMemoryError=“杀死 -9 %p";问题

2022-01-16 00:00:00 jvm java jetty

我在尝试将 -XX:OnOutOfMemoryError="kill -9 %p" 命令传递到我的 jvm 参数时遇到问题.

I have an issue with trying to pass the -XX:OnOutOfMemoryError="kill -9 %p" command into my jvm args.

我正在使用 Jetty7,并且在 start.ini 文件中有这个.在启动时它给我下面的错误.这是与 jre/jre1.6.0_03l64

I am using Jetty7, and have this within the start.ini file. On start up it give me the error below. This is with jre /jre1.6.0_03l64

开始码头:开始码头 2011 年 4 月 26 日星期二 09:54:26 EDT
无法识别的选项:-9
无法创建 Java 虚拟机.

Starting Jetty: STARTED Jetty Tue Apr 26 09:54:26 EDT 2011
Unrecognized option: -9
Could not create the Java virtual machine.

start.ini 文件如下.

The start.ini file is as below.

#===========================================================
# If the arguements in this file include JVM arguments
# (eg -Xmx512m) or JVM System properties (eg com.sun.???),
# then these will not take affect unless the --exec
# parameter is included or if the output from --dry-run
# is executed like:
#   eval $(java -jar start.jar --dry-run)
#
# Below are some recommended options for Sun's JRE
#-----------------------------------------------------------
  --exec
# -Dcom.sun.management.jmxremote
  -Xmx4096m
  -Xmn512m
  -DLABEL=PROD_APP
  -verbose:gc
  -Xloggc:/export/opt/prod_app/logs/gc.log
  -XX:OnOutOfMemoryError="kill -9 %p"
# -XX:+PrintGCDateStamps
  -XX:+PrintGCTimeStamps
  -XX:+PrintGCDetails
  -XX:+PrintTenuringDistribution
# -XX:+PrintCommandLineFlags
# -XX:+DisableExplicitGC
# -XX:+UseConcMarkSweepGC
# -XX:ParallelCMSThreads=2
# -XX:+CMSClassUnloadingEnabled
# -XX:+UseCMSCompactAtFullCollection
# -XX:CMSInitiatingOccupancyFraction=80

评论 line out jetty 将毫无问题地开始.但是,由于系统内存泄漏,我们确实需要添加此参数,以防止我们的进程崩溃时进一步损坏.

Commenting the line out jetty will start fine with no issue. However we really need to add this arg due to memory leak with the system to prevent further damage if our process falls over.

有人知道我在这里做错了什么或如何解决这个问题吗?

Would anyone have any idea what I am doing wrong here or how I can fix this?

推荐答案

在 Java 版本 8u92 中的 VM 参数

In Java version 8u92 the VM arguments

  • -XX:+ExitOnOutOfMemoryError
  • -XX:+CrashOnOutOfMemoryError

已添加,请参阅 发行说明.

ExitOnOutOfMemoryError
启用此选项时,JVM 会在第一次出现内存不足错误.如果你可以使用它更喜欢重新启动 JVM 实例而不是处理记忆错误.

ExitOnOutOfMemoryError
When you enable this option, the JVM exits on the first occurrence of an out-of-memory error. It can be used if you prefer restarting an instance of the JVM rather than handling out of memory errors.

CrashOnOutOfMemoryError
如果启用此选项,当发生内存不足错误,JVM 崩溃并生成文本和二进制崩溃文件.

CrashOnOutOfMemoryError
If this option is enabled, when an out-of-memory error occurs, the JVM crashes and produces text and binary crash files.

增强请求:JDK-8138745(虽然参数命名错误JDK-8154713, ExitOnOutOfMemoryError 而不是 ExitOnOutOfMemory)

Enhancement Request: JDK-8138745 (parameter naming is wrong though JDK-8154713, ExitOnOutOfMemoryError instead of ExitOnOutOfMemory)

相关文章