Как отправить Ctrl-Break в работающий процесс Linux? - PullRequest
10 голосов
/ 12 мая 2009

Я отлаживаю утечку памяти в приложении, работающем на Sun JDK 1.4.2_18. Похоже, что эта версия поддерживает параметр командной строки -XX: + HeapDumpOnCtrlBreak, который предположительно заставляет JVM выгружать кучу, когда он сталкивается с разрывом управления. Как отправить это в фоновый процесс на Linux? Похоже, что сигналы уничтожения - это то, как это должно работать, но я убиваю -l не сообщает ничего, что, очевидно, является Ctrl-Break, по крайней мере, на моем Ubuntu box.

Обновление: я тестировал Kill -3 с Sun JDK 1.4.2_18 (_14 был первым, кто сбросил кучу таким образом), и это сработало. Файл дампа кучи создан, и процесс все еще выполняется.

Ответы [ 2 ]

15 голосов
/ 12 мая 2009

Ctrl- \ является UNIX / Linux-эквивалентом Windows Ctrl-Break. Википедия также говорит мне, что вы также можете использовать Ctrl-4 или SysRq на виртуальной консоли Linux (я думаю, вам нужно что-то странное, чтобы обычный эмулятор терминала передавал представления этих нажатий клавиш (через ssh / телнет)).

10 голосов
/ 12 мая 2009

kill -QUIT может сделать это (он сгенерирует дамп потока, который генерируется ctrl-break на windows. Хотя я не пробовал с опцией heap dump).

...