Есть ли что-то вроде «-XX: OnError» или «-XX: OnOutOfMemoryError» в IBM JVM? - PullRequest
4 голосов
/ 12 августа 2010

В Java HotSpot VM есть два следующих параметра:

-XX:OnError="<cmd args>;<cmd args>" Run user-defined commands on fatal error. (Introduced in 1.4.2 update 9.) 

-XX:OnOutOfMemoryError="<cmd args>; 
<cmd args>" Run user-defined commands when an OutOfMemoryError is first thrown. (Introduced in 1.4.2 update 12, 6) 

Насколько я понимаю, в IBM JVM таких опций нет.
Это правильно?

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

Ответы [ 3 ]

5 голосов
/ 12 августа 2010

IBM J9 JDK предлагает указанную возможность через флаг -Xdump ;это предпочтительный способ регистрации агентов дампа.

Типичный способ настройки JVM для создания дампов кучи в OOME - это перехват всех ошибок нехватки памяти, выданных приложением или JVM, и подготовкадамп для "прогулки" (с инспектором кучи).

-Xdump:system+heap+java:events=systhrow+user,filter=java/lang/OutOfMemoryError,request=exclusive+prepwalk+compact

Ссылка: Руководство по анализатору памяти Eclipse

Переменная среды JAVA_DUMP_OPTS можеттакже будет использоваться.Более подробную информацию об этом можно найти в Руководстве по диагностике IBM JDK .

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

Для запуска команды в OOME, опция инструмента должна быть указана в опции -Xdump.

3 голосов
/ 12 августа 2010

-Xdump ваш друг и очень могущественен.

Для вашего случая OOM что-то вроде:

"- Xdump: tool: events = throw, filter = * OutOfMemoryError, exec = cmd_to_run

0 голосов
/ 12 августа 2010

Я ожидаю, что IBM JVM будет поддерживать те же флаги, так как это инструментальная версия Sun JVM, если я правильно помню.Возможно ли сравнить параметры командной строки между основными версиями Java?(То есть Sun 1.6 против IBM 1.4.2?)

Если вы не найдете решения для флагов, вы можете воспользоваться тем, что IBM JVM обновляет файл /tmp/dump-locations, добавив полный путьиз файла дампа.Задание cron может запускать ваш сценарий, когда к этому файлу прикасаются с момента его последнего запуска.

...