Как избежать усеченных следов стека с помощью Java Flight Recorder

Я использую Oracle Java Flight Recorder для сбора образцов трассировки стека Java-приложения. Эти трассировки стека позволяют мне в конечном итоге создать процессор Flamegraph.

Моя проблема в том, что трассировка стека глубже 64 кадров усекается с помощью Java Flight Recorder. Это очень легко наблюдать в Flamegraph и используя отладчик, я могу заметить, что нет FLRStackTrace имеет более 64 FLRFrames и что почти для всех трассировок стека с 64 кадрами TruncationState имеет значение TRUNCATED,

Кто-нибудь знает, можно ли увеличить этот предел в 64 кадра? Flamegraphs бесполезны, если трассировка стека неполная.

1 ответ

Решение

Ага! Но нет, если вы работаете на JRockit. Если вы работаете в HotSpot, просто используйте флаг -XX: FlightRecorderOptions = stackdepth =, где n, как вы обнаружили, по умолчанию равно 64.

Более подробная информация здесь: http://hirt.se/blog/?p=364

Другие вопросы по тегам