我正试图了解
-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"
答案 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