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

标签 java jvm jmc jfr flamegraph

我正在使用 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/

相关文章:

java - Kafka - 无法使用 Java 将消息发送到远程服务器

java - Maven maven-gpg-plugin 在 "artifact has not been assembled yet"上失败

java - Jetty9 - Jetty 不是从单独的 {jetty.base} 运行

Java Mission Control 未列出任何要连接的 JVM

java - Guava 字符串排序

java - JVM 可以优化数组的多次读取吗

java - JVM 基准测试应用程序

scala - friend 之间的Int.MaxValue是多少?

java - 无法连接 VirtualBox VM 上的分析器 (JMC)