我正在使用 Oracle Java Flight Recorder收集 Java 应用程序的堆栈跟踪样本。这些堆栈跟踪允许我最终生成 CPU Flamegraph .
我的问题是深度超过 64 帧的堆栈跟踪被 Java Flight Recorder 截断。在 Flamegraph 中很容易观察,使用调试器我可以观察到没有 FLRStackTrace
有超过 64 个 FLRFrame
并且几乎所有 64 帧的堆栈跟踪都有它们的 TruncationState设置为 TRUNCATED
。
有谁知道这个 64 帧的限制是否可以增加?如果堆栈跟踪不完整,火焰图就毫无用处。
最佳答案
是的!但如果您在 JRockit 上运行则不会。如果在 HotSpot 上运行,只需使用标志 -XX:FlightRecorderOptions=stackdepth=<n>
,正如您所发现的,其中 n 默认为 64。
更多信息在这里: http://hirt.se/blog/?p=364
关于java - 如何避免使用 Java Flight Recorder 截断堆栈跟踪,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32118646/