jvm: возможно ли узнать, что процесс завершается из-за OOM, находясь в ловушке выключения ?

У меня есть критический процесс, работающий в java (1.6), с зарегистрированной обработкой завершения работы. В некоторых случаях, когда у меня возникает проблема с OOM (более подробная информация о проблеме ниже), процесс внезапно останавливается, я не получаю никаких журналов, мой catch (Throable x) не улавливает исключение.

Но ловушка выключения работает. Так что, если бы был способ узнать, что процесс будет остановлен из-за какого-нибудь неприятного OOM, я мог бы записать необходимую информацию перед выходом.

Есть ли способ сделать это?

О OOM : Так что, если бы был способ узнать, что процесс будет остановлен из-за какого-нибудь неприятного OOM, я мог бы записать необходимую информацию перед выходом.

Есть ли способ сделать это?

О OOM : Так что, если бы был способ узнать, что процесс будет остановлен из-за какого-нибудь неприятного OOM, я мог бы записать необходимую информацию перед выходом.

Есть ли способ сделать это?

О OOM : Не уверен, что является исключением, потому что, как я сказал, его не поймают. Я знаю, что это OOM, потому что я начинаю процесс с

-XX:+HeapDumpOnOutOfMemoryError

и получаю файл дампа кучи. В других случаях перехватывается исключение, и это ava.lang.OutOfMemoryError: превышен предел накладных расходов GC. Но не уверен, что это всегда так.

РЕДАКТИРОВАТЬ:

В случае, если это неясно: Я не пытаюсь предотвратить OOM, поскольку в некоторых случаях это может произойти по уважительным причинам, я просто хочу сделать убедитесь, что это ясно в файлах журнала приложения

Мой вопрос : можно ли узнать, что процесс завершается из-за OOM, находясь в ловушке отключения?

Мне нужно это сделать программно и из того же процесса .

На данный момент лучший подход - посмотреть, существует ли файл дампа кучи java_pid_pid для процесса_. Думаю, я мог бы попробовать Runtime.getRuntime (). FreeMemory () и сообщить о проблеме, если доступной памяти очень мало, но не уверен, насколько это надежно, возможно, когда процесс завершается, он уже освободил много памяти, подход Я думаю, что выше лучше всего.

5
задан Persimmonium 10 November 2010 в 16:43
поделиться