微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JFR 中 RecordedFile 的调用堆栈是否完整?

如何解决JFR 中 RecordedFile 的调用堆栈是否完整?

在使用 Java Flight Recorder 进行记录的持续时间内,在该持续时间内调用的所有方法是否都将列在 RecordedFile 中?

鉴于:

  • 我没有记录事件的子集。
  • 我没有创建任何自定义事件。
  • 我使用的是 AdoptOpenJDK 11.0.10

提前感谢您的回答。

解决方法

没有

首先,JFR 是一个采样分析器。它不记录所有方法转换;相反,它需要定期采样。 IE。一次在指定的时间间隔内,它会查看当前正在运行的线程的调用堆栈。

第二,当 JFR fails to traverse 是一个有效的 Java 堆栈时,它往往会遗漏很多样本。我在 my presentation 中演示了这种效果:JFR 在 10 秒的执行中只捕获了一个无意义的应用程序堆栈跟踪。

您可以通过调整采样 period 设置来选择 JFR 收集的样本数量。周期越小 - JFR 收集的堆栈样本越多。但是,可能的最小周期仅为 1 ms。此外,采样频率不能很好地与运行线程的数量成比例。无论您的服务器有多少个内核,只有一个线程可以收集所有 ExecutionSample 事件。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。