Трассировка стека для потока, вызывающего OOM - PullRequest
1 голос
/ 28 июля 2011

У меня есть Java-приложение, которое получает OutOfMemoryError, для кучи пространства. Я включил -XX: HeapDumpOnOutOfMemoryError и получил результирующий файл hprof.

Тем не менее, дамп показывает, что в куче, permgen и т. Д. Остается много свободного места. Я полагаю, что это может быть причиной одного запроса большого объема памяти (например, массива 1 ГБ), который завершается неудачно и таким образом, не появляется на свалке.

По сути, я хотел бы видеть стек потока, который вызвал OOM в тот момент, когда OOM выбрасывается.

Возможно ли это из дампа hprof?

1 Ответ

3 голосов
/ 28 июля 2011

Его нет в дампе, потому что он находится в OutOfMemoryError.Если вам удастся перехватить и напечатать трассировку стека этой ошибки, она сообщит, где это происходит.

...