2009-12-10 3 views
12

У нас есть настольное приложение, использующее JNI, которое иногда приводит к сбою JVM. К счастью, JVM создает файл hs_err_pidXXXX.log, что весьма полезно при отладке таких ошибок. Тем не менее, он всегда, кажется, идет в текущий рабочий каталог, и это раздражает, чтобы вырыть его оттуда, так как наши другие файлы журналов все идут в определенное «место в файле журнала».Можно ли указать, где находятся аварийные свалки JVM?

Можно ли указать другое местоположение для этих файлов аварийных дампов? Как?

ответ

12

Йонас,

Хотя HeapDumpPath работает в куче дамп это не ответ на ваш вопрос. Дамп кучи и журнал аварийных событий jvm - две отдельные вещи.

Чтобы изменить место назначения аварии JVM журнала выполнение Java с этой опцией:

-XX:ErrorFile=/path/to/file. 

Путь/к/файлу является местом, где вы хотите, журнал сбоев виртуальной машины Java для вывода.

+0

Как запустить Java с помощью этой опции? Я не мог этого сделать через cmd –

+1

@MuhammedRefaat На консоли: 'java -XX: ErrorFile =/путь/в/file.log -jar myapp.jar' – sja

+0

@sja большое спасибо –

9

По умолчанию дамп кучи создается в файле с именем java_pidpid.hprof в рабочем каталоге виртуальной машины. Вы можете указать альтернативное имя файла или каталог с параметром -XX: HeapDumpPath =. Например, -XX: HeapDumpPath =/disk2/dumps приведет к созданию дампа кучи в каталоге /disk2/dumps.

+1

-1 Вопрос о журнале аварии, а не в куче дампа, как указывает принятый ответ. Это по-прежнему хорошая информация, но не ответ на этот вопрос. –

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