【发布时间】:2021-02-06 18:41:23
【问题描述】:
在使用 Java Flight Recorder 进行录制期间,在此期间调用的所有方法是否都会列在 RecordedFile 中?
鉴于:
- 我没有记录事件的子集。
- 我没有创建任何自定义事件。
- 我正在使用 AdoptOpenJDK 11.0.10
提前感谢您的任何回答。
【问题讨论】:
标签: java jvm method-call jfr
在使用 Java Flight Recorder 进行录制期间,在此期间调用的所有方法是否都会列在 RecordedFile 中?
鉴于:
提前感谢您的任何回答。
【问题讨论】:
标签: java jvm method-call jfr
没有。
首先,JFR 是一个采样分析器。它不记录所有方法转换;它取而代之的是定期采样。 IE。在指定的时间间隔内,它会查看当前正在运行的线程的调用堆栈。
其次,当 JFR fails to traverse 是一个有效的 Java 堆栈时,它往往会遗漏许多样本。我在my presentation 中演示了这种效果:JFR 在 10 秒的执行中只捕获了一个无意义的应用程序堆栈跟踪。
您可以通过调整采样period 设置来选择 JFR 收集的样本数量。周期越小 - JFR 收集的堆栈样本越多。然而,最小的可能周期仅为 1 ms。此外,采样频率不能很好地与运行线程的数量成比例。无论您的服务器有多少内核,只有一个线程可以收集所有 ExecutionSample 事件。
【讨论】: