JFR是Java分析器,它使您可以研究代码的运行时特征。 通常,您将使用探查器来确定代码的哪些部分导致大量内存分配或导致消耗过多的CPU。
有很多产品在那里。 过去,我使用过YourKit,OptimizeIt,JProfiler,NetBeans等。 每个都有其优点,并且在很大程度上取决于您所选择的个人偏好。 我当前个人最喜欢的是YourKit。 它可以很好地集成到IntelliJ中,具有相对较低的开销,并且可以很好地呈现其报告。
事实是,概要分析是一门非常不精确的科学,通常值得研究多个剖析器以更清晰地了解程序中到底发生了什么。 据我所知,大多数探查器都依赖JVMP / JVMTI代理来探查Java程序。 一个主要的问题是安全点 。 这意味着您的Java程序只有在安全点才能被探测。 这意味着您将错误地了解程序中实际发生的情况,尤其是当许多活动处于安全点之间时。 同样,所有探查器也会在不同程度上增加开销。 Profiler的开销将改变程序的特性,并可能导致分析结果产生误导。 这里有更多信息。
输入JFR。 自7u40版以来,JRF已与JDK捆绑在一起。 通过直接访问JVM构建JFR。 这不仅意味着开销很低(几乎在所有情况下都声称少于1%),而且也不依赖安全点。