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

Are the call-stacks from a RecordedFile in JFR complete?

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

鉴于:

提前感谢您的回答。

没有

首先,JFR 是一个采样 分析器。它不记录 all 方法转换;它取而代之的是定期采样。 IE。在指定的时间间隔内,它会查看当前线程 运行 的调用堆栈。

其次,JFR 在 fails to traverse a valid Java stack. I demonstrated this effect in my presentation 时往往会错过许多样本:JFR 在 10 秒的执行过程中只捕获了一个无意义的应用程序堆栈跟踪。

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