杀死%p是什么意思

时间:2018-10-23 14:02:58

标签: jvm kill

我正试图了解

-XX:OnOutOfMemoryError ='杀死%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"

2 个答案:

答案 0 :(得分:3)

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

该选项告诉JVM发生OutOfMemoryError时自行杀死。

答案 1 :(得分:1)

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

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

从8u92开始,不再需要这种黑客攻击,因为这里有一个ExitOnOutOfMemory选项:Java - shutting down on Out of Memory Error