У меня установлено приложение Java (поверх Spring Boot framework) как служба systemd.
[Unit]
Description=${module_name}-service
Requires=network.target
After=syslog.target
[Service]
User=${user_name}
ExecStart=/opt/${module_name}/${module_name}-${version}.jar
SuccessExitStatus=143
[Install]
WantedBy=multi-user.target
Как управлять перезапуском службы при некоторых условиях, например, автоматический перезапуск после ошибок OutOfMemory
Как сказал Филдор, я предлагаю вам исправить проблемы с памятью.
После этого возможное решение:
Если вы используете Java до 8u92, вы можете добавить в JVM следующий аргумент:
java -jar <jar-name> -XX:OnOutOfMemoryError="kill -9 %p"
в Java версии 8u92 или выше вы можете использовать -XX:+CrashOnOutOfMemory
или -XX:+ExitOnOutOfMemoryError
Затем настройте свою службу для перезапуска при сбое:
Restart=on-failure
или
Restart=always