как увеличить размер трассировки стека Java, чтобы увидеть нижнюю часть стека? (запуск переполнения стека)

В Java есть ли способ просмотреть полную, неусеченную трассировку стека (, например. увеличив количество записанных кадров )или иным образом добраться до нижней части трассировки стека? Обычно трассировка стека усекается сверху на 1024 кадра, но для проблемы переполнения стека это довольно бесполезно, поскольку вам действительно нужно увидеть, кто сделал вызов, вызвавший рекурсию, внизу, ближе к низу. Гораздо лучше было бы усечение в середине стека,но очевидно, что JVM Sun недостаточно умна для этого.

Возможно, даже какие-то специальные флаги Sun -? Я попытался уменьшить размер стека до минимально допустимого (-Xss1000 ), но это все равно больше, чем 1024 кадра.

В моем случае я пытаюсь отладить переполнение стека, возникающее в преобразователе Hadoop, но только при работе с действительно большими входными данными. Я предполагаю, что проблема возникает из-за рекурсивной операции (Scala foldRight). выполняется в очень, очень большом связанном списке, и мне нужно переписать его не -рекурсивно... но мне нужно знать, кто сделал вызов foldRight. Это базовая подпрограмма, вызываемая прямо и косвенно во многих местах, и существует очень много кода, с которым я работаю, так что -это весьма неочевидно.

10
задан Urban Vagabond 8 August 2012 в 13:12
поделиться