Как перехватить OutOfMemoryError в JVM и запустить скрипт, если он пойман? - PullRequest
9 голосов
/ 29 сентября 2010

У меня есть программа, которая иногда выдает OOME, Я понимаю, что в опциях JVM есть флаг, который я могу установить, и всякий раз, когда появляется определенная ошибка / исключение (например, OOME), он вызывает скрипт, который я написал. Сценарий выдаст пользователю уведомление и вызовет программу с другим аргументом, чтобы он больше не получал OOME.

Кто-нибудь знает, как установить этот флаг? какие параметры JVM мне нужно установить? Я везде искал в сети и не мог найти ответ.

помогите мне, пожалуйста! Спасибо, Да

Ответы [ 2 ]

13 голосов
/ 29 сентября 2010
0 голосов
/ 29 сентября 2010

Я нашел одно предложение на форуме : перехватить OOME в вашем приложении (как непосредственно в main, если вы однопоточны) и сделать это в обработчике catch:

catch (OutOfMemoryError not_again) {
  System.gc();
  System.runFinalization();
  System.gc();
  System.out.println("Your error message");
}

Очистка кучи может освободить достаточно памяти для вывода последнего сообщения об ошибке перед смертью.

...