kill %p 是什么意思

What does kill %p mean

我想了解

-XX:OnOutOfMemoryError='kill %p'

在下面的命令中是什么意思?

我不知道 %p 是什么意思?

exec /bin/bash -c "LD_LIBRARY_PATH="/usr/hdp/current/hadoop-client/lib/native:/usr/hdp/current/hadoop-client/lib/native/Linux-amd64-64:$LD_LIBRARY_PATH" $JAVA_HOME/bin/java -server -Xmx5120m '-DENVIRONMENT=pt' -Djava.io.tmpdir=$PWD/tmp '-Dspark.history.ui.port=18081' '-Dspark.driver.port=39112' -Dspark.yarn.app.container.log.dir=/hadoop/hdfs/drive5/hadoop/yarn/log/application_1539650094881_0116/container_e111_1539650094881_0116_01_000024 -XX:OnOutOfMemoryError='kill %p' org.apache.spark.executor.CoarseGrainedExecutorBackend --driver-url spark://CoarseGrainedScheduler@192.168.1.13:39112 --executor-id 13 --hostname slave3.hadoop.tsl.com --cores 5 --app-id application_1539650094881_0116 --user-class-path file:$PWD/__app__.jar 1> /hadoop/hdfs/drive5/hadoop/yarn/log/application_1539650094881_0116/container_e111_1539650094881_0116_01_000024/stdout 2> /hadoop/hdfs/drive5/hadoop/yarn/log/application_1539650094881_0116/container_e111_1539650094881_0116_01_000024/stderr"

%p这里是PID的占位符。
JVM 会自动将其替换为当前 运行 Java 进程的进程 ID。

该选项告诉 JVM 在发生 OutOfMemoryError 时自行终止。

此参数在发生 OutOfMemory 错误时执行 OS 命令。它可用于发送警报、收集诊断或重新启动应用程序。

JVM 将用自己的进程 ID (PID) 替换 %p。在特定情况下,它允许在 OOM 中终止应用程序。这通常是个好主意,因为 OutOfMemory 错误可能会随机中断线程,并且没有好的可靠方法继续。

自 8u92 以来,不再需要此 hack,因为这里讨论了 ExitOnOutOfMemory 选项:Java - shutting down on Out of Memory Error