2016-11-18 2 views
0

Я заметил, что jvm не генерирует сброс кучи по сигналу 3. Я пробовал jvm 1.8.60 и jvm 1.7.60 (ubuntu 14). Когда jvm получает сигналы, он печатает дамп потока на консоль, но файл дампа памяти не отображается.Jvm heapdump не генерируется сигналом

java -XX:HeapDumpPath=/tmp/xxx

Трассировка варианты Java подтверждает, что все в порядке.

bool PrintHeapAtSIGBREAK = true {product}
ccstr HeapDumpPath := /tmp/xxx {manageable}

Что я пропустил?

jmap работает, хотя.

kill and jvm run под тем же самым пользователем. jar - приложение для приветствия.

ответ

0

JVM не должен генерировать дамп кучи на SIGQUIT (убить -3).

PrintHeapAtSIGBREAK означает другой предмет. Он печатает краткое описание компоновки кучи, например.

Heap 
PSYoungGen  total 75264K, used 3870K [0x000000076c600000, 0x0000000771a00000, 0x00000007c0000000) 
    eden space 64512K, 6% used [0x000000076c600000,0x000000076c9c7b68,0x0000000770500000) 
    from space 10752K, 0% used [0x0000000770f80000,0x0000000770f80000,0x0000000771a00000) 
    to space 10752K, 0% used [0x0000000770500000,0x0000000770500000,0x0000000770f80000) 
ParOldGen  total 172032K, used 0K [0x00000006c5200000, 0x00000006cfa00000, 0x000000076c600000) 
    object space 172032K, 0% used [0x00000006c5200000,0x00000006c5200000,0x00000006cfa00000) 
Metaspace  used 2471K, capacity 4486K, committed 4864K, reserved 1056768K 
    class space used 267K, capacity 386K, committed 512K, reserved 1048576K 

jmap - это правильный способ создания кучи кучи.

0

-XX:HeapDumpPath работает только при использовании с -XX:HeapDumpOnOutOfMemory, к сожалению. Вы можете найти ссылку в Oracle docs . Вы можете получить stacktrace через jstack или контролировать JVM с помощью инструмента Java Mission Control, содержащегося в JDK.

Edit: Вы можете также использовать jmap, чтобы получить кучу сваливать

Смежные вопросы