改善 JFR 方法概要分析的保真度
JFR 方法概要分析的一个很好的特点是它在进行堆栈采样时不要求线程处于安全点。但是,由于通常情况下堆栈只有在安全点上才会遍历,因此 HotSpot 通常不为代码的非安全点部分提供元数据,这意味着此类采样将无法恰当地解析为正确的行号和 BCI。即,除非您指定:
-XX:+UnlockDiagnosticVMOptions -XX:+DebugNonSafepoints
通过使用 DebugNonSafepoints
,编译器还将为不在安全点的代码部分生成所需的元数据。