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

时间:2015-08-20 12:45:29

标签: java jvm jmc jfr flamegraph

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

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

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

1 个答案:

答案 0 :(得分:6)

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

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