如何使用Java Flight Recorder避免截断的堆栈跟踪

Clé*_*IEU 3 java jvm jmc flamegraph jfr

我正在使用Oracle Java Flight Recorder来收集Java应用程序的堆栈跟踪示例.这些堆栈跟踪允许我最终生成CPU Flamegraph.

我的问题是Java Flight Recorder会截断超过64帧的堆栈跟踪.在Flamegraph中很容易观察到并且使用调试器我可以观察到没有FLRStackTrace超过64 FLRFrame秒且几乎所有64帧的堆栈跟踪都将其TruncationState设置为TRUNCATED.

有谁知道这64帧限制是否可以增加?如果堆栈跟踪不完整,则Flamegraphs无用.

Hir*_*irt 6

是的!但如果你在JRockit上运行,那就不行了.如果在HotSpot上运行,只需使用标志-XX:FlightRecorderOptions = stackdepth = <n>,其中n,如您所发现的,默认为64.

更多信息:http: //hirt.se/blog/?p = 364