JDK Flight Recorder支持的预览版已作为与GraalVM 19.2捆绑在一起的VisualVM工具的插件发布。该插件读取从Java 7和更高版本创建的所有JFR快照,并以工具用户熟悉的典型VisualVM视图显示数据。
JDK Flight Recorder(JFR,以前是Java Flight Recorder)是用于收集有关正在运行的Java应用程序的诊断和性能分析数据的工具。它已集成到Java虚拟机(JVM)中,几乎没有性能开销,因此,即使在负载很大的生产环境中也可以使用它。
界面功能描述:
预览版中不提供某些高级功能,如分析JVM内部,显示事件堆栈跟踪或支持从实时进程创建JFR快照,这些功能将在预览版本中逐步解决。
要安装JFR支持,请从 https://www.graalvm.org 下载GraalVM 19.2或更高版本,安装并运行<GRAALVM_HOME>/bin/jvisualvm以启动VisualVM。使用工具| 插件| 可用插件列出所有可用插件并安装VisualVM-JFR和VisualVM-JFR-Generic模块。可以使用文件|文件管理器打开JFR快照。加载...操作或通过双击“ JFR快照”节点并将快照永久添加到JFR存储库中。
请按照您的Java版本的文档来创建JFR快照。对于GraalVM Enterprise,可以通过在java命令中添加以下参数来创建JFR快照:
<GRAALVM_HOME>/bin/java -XX:+UnlockCommercialFeatures -XX:StartFlightRecording=duration=10s,filename=filename.jfr -jar ...
请注意,由于底层的OpenJDK 8不支持在GraalVM 19.2 CE中创建JFR快照,因此不可用。您可以使用OpenJDK 11和更高版本来创建JFR快照:
<OPENJDK11_HOME>/bin/java -XX:StartFlightRecording=duration=10s,filename=filename.jfr -jar ...
如果您想在Java应用程序上对其进行测试,但没有自己喜欢的工具,可以尝试使用 Spring Petclinic示例Web应用程序
git clone https:<font><i>//github.com/spring-projects/spring-petclinic.git</i></font><font> mvn clean <b>package</b> -DskipTests=<b>true</b> # verify it works: <GRAALVM_HOME>/bin/java -jar target/spring-petclinic-2.1.0.BUILD-SNAPSHOT.jar </font>
这将启动示例应用程序,并使其在 localhost:8080 上可用。
现在,您只需要在命令中添加上面的命令行选项,javaFlight Recorder就会收集分析信息。
<GRAALVM_HOME>/bin/java -XX:+UnlockCommercialFeatures -XX:StartFlightRecording=dumponexit=<b>true</b>,filename=petclinic.jfr -jar target/spring-petclinic-2.1.0.BUILD-SNAPSHOT.jar
请注意在dumponexit=true应用程序运行结束时用于填充文件的命令,另一种选择是指定记录的持续时间。
打开应用程序并单击,或者如果您有负载生成工具(例如 wrk) ,则可以使用它来生成示例工作负载以获取更有意义的配置文件。例如,以下命令将对正在运行的应用程序中的网页之一施加负载30秒。
wrk -d30s -R2000 http:<font><i>//localhost:8080/owners/?lastName/=</i></font><font> </font>
停止应用程序,确认petclinic.jfr文件存在,然后如上所述将其加载到VisualVM中。
您现在可以从VisualVM调查JFR记录有关您的应用程序的日期。
请注意,JFR记录是进行性能分析的最佳工具之一,如果您希望GraalVM Enterprise更好地处理工作负载,则可以与GraalVM团队联系,例如在 GitHub上 ,我们将尝试调查是否有优化的机会。
感谢您对VisualVM中的JFR支持的反馈-请让我们知道您希望在下一版本中看到哪些功能!将您的评论留在本文下方或 http://visualvm.github.io/feedback.html ,或在 https://github.com/oracle/visualvm/issues 提交RFE / bug 。
点击标题见原文图