2012-03-05 2 views
5

Я хочу, чтобы моя java выходила при ловле OutOfMemoryError, я использую -XX:+HeapDumpOnOutOfMemoryError для сбрасывания файла hprof.
Я не могу использовать kill -9 <pid>, потому что JVM должен быть вставлен при сбрасывании файла hprof, есть ли способ остановить JVM после создания файла hprof?

Чтобы быть ясно, я использую версию JVM от Sun 6.OutOfMemoryError - как убить JVM после создания hprof

ответ

4

This page, кажется, подразумевает, что вы можете объединить -XX:+HeapDumpOnOutOfMemoryError и -XX:OnOutOfMemoryError="kill -9 %p"

Предположительно, создается дамп кучи до «Вкл. .. "выполняется команда. (Это должно быть легко скомпоновать что-то, чтобы проверить это.)

+1

Я объединил эти два аргумента JVM, ваше предположение не совсем правильно. Создание дампа кучи параллельно команде «Вкл ...», в моем случае убийство произошло до того, как дамп полностью создан, смерть JVM в середине создания дампа приведет к повреждению 'hprof'. –

+0

ОК, поэтому страница Oracle вводит в заблуждение. Но вы все равно должны работать с этим поведением, чтобы добиться желаемого поведения. –

+0

вы пропустите двоеточие в '-XX: OnOutOfMemoryError' – mighq