我使用Oracle Java Flight Recorder来收集Java应用程序的堆栈跟踪示例。这些堆栈跟踪允许我最终生成CPU Flamegraph。
我的问题是Java Flight Recorder会截断超过64帧的堆栈跟踪。在Flamegraph中很容易观察到并且使用调试器我可以观察到FLRStackTrace
没有超过64 FLRFrame
s并且几乎所有64帧的堆栈跟踪都将其TruncationState设置为TRUNCATED
。
有谁知道这64帧限制是否可以增加?如果堆栈跟踪不完整,Flamegraphs将无用。
答案 0 :(得分:6)
是的!但如果你在JRockit上运行,那就不行了。如果在HotSpot上运行,只需使用标志-XX:FlightRecorderOptions = stackdepth =< n>,其中n,如您所发现的,默认为64。