Что означает убить %p

Я пытаюсь понять, что делает

-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://[email protected]: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"

person Abdul Rahman    schedule 23.10.2018    source источник


Ответы (2)


%p здесь заполнитель для PID.
JVM автоматически заменит его идентификатором процесса, выполняющегося в данный момент Java.

Параметр указывает, что JVM уничтожает себя, когда возникает ошибка OutOfMemoryError.

person apangin    schedule 23.10.2018

Этот аргумент выполняет команду ОС при возникновении ошибки OutOfMemory. Его можно использовать для отправки предупреждений, сбора диагностики или для перезапуска приложения.

JVM заменит %p своим идентификатором процесса (PID). В конкретном случае это позволяет завершить приложение в OOM. Обычно это хорошая идея, потому что ошибка OutOfMemory может случайно прервать поток, и нет хорошего и надежного способа продолжить.

Начиная с 8u92 этот хак больше не нужен, так как есть опция ExitOnOutOfMemory, как обсуждается здесь: Java: завершение работы из-за ошибки нехватки памяти

person eckes    schedule 23.10.2018