Я хочу, чтобы моя java выходила при ловле OutOfMemoryError
, я использую -XX:+HeapDumpOnOutOfMemoryError
для сбрасывания файла hprof
.
Я не могу использовать kill -9 <pid>
, потому что JVM должен быть вставлен при сбрасывании файла hprof
, есть ли способ остановить JVM после создания файла hprof
?
Чтобы быть ясно, я использую версию JVM от Sun 6.OutOfMemoryError - как убить JVM после создания hprof
5
A
ответ
4
This page, кажется, подразумевает, что вы можете объединить -XX:+HeapDumpOnOutOfMemoryError
и -XX:OnOutOfMemoryError="kill -9 %p"
Предположительно, создается дамп кучи до «Вкл. .. "выполняется команда. (Это должно быть легко скомпоновать что-то, чтобы проверить это.)
Я объединил эти два аргумента JVM, ваше предположение не совсем правильно. Создание дампа кучи параллельно команде «Вкл ...», в моем случае убийство произошло до того, как дамп полностью создан, смерть JVM в середине создания дампа приведет к повреждению 'hprof'. –
ОК, поэтому страница Oracle вводит в заблуждение. Но вы все равно должны работать с этим поведением, чтобы добиться желаемого поведения. –
вы пропустите двоеточие в '-XX: OnOutOfMemoryError' – mighq