Точная точка исполнения, при которой возникает OutOfMemoryError, очень случайна (если только у вас нет однопоточного приложения) , поэтому я не думаю, что было бы слишком много смысла, чтобы получить дамп потока в OOM. По крайней мере, это верно, если это «пространство кучи Java» типа OOM, но, вероятно, для других видов ошибок OOM.
В любом случае, взгляните на this older post, обратившись к тому же вопросу.
Однако лучший способ справиться с ошибкой OOM состоит в том, чтобы использовать Eclipse Memory Analyzer Tool для проверки heapdump. Это помогает идентифицировать утечки памяти, преобразуя граф объектов в так называемый dominator tree. Эта структура раскрывает зависимости между живыми объектами, поэтому становится очень легко идентифицировать тех, кто отвечает за сохранение самых больших блоков памяти (см. Shallow vs. Retained Heap).
Вы можете использовать VisualVM для создания HeapDump, более новые версии Java имеют его на борту, посмотрите на bin/folder. –
В Unix SIGQUIT (отправляется с командой kill или набрав Ctrl- \ в консоли программы) выгружает трассировки стека всех потоков. В Windows это сделает Ctrl-Break в консоли программы. – VGR