graalvm native-image jfr 试用

发布时间 2023-06-24 22:37:10作者: 荣锋亮

graalvm 最近license 许可模型的修改,对于我们使用graalvm 增加了不少信心,尤其是以前需要企业订阅的一些特性
以下是一个简单的jfr 试用

代码&构建

代码来自官方文档,主要是试用下,对于graalvm直接可以免费下载企业版了, 同时需要安装visualvm

  • 代码
    JFRDemo.java
 
import jdk.jfr.Event;
 import jdk.jfr.Description;
 import jdk.jfr.Label;
 
 public class JFRDemo {
 
   @Label("Hello World")
   @Description("Build and run a native executable with JFR.")
   static class HelloWorldEvent extends Event {
       @Label("Message")
       String message;
   }
 
   public static void main(String... args) {
       HelloWorldEvent event = new HelloWorldEvent();
       event.message = "Hello, World!";
       event.commit();
   }
 }
  • 构建
javac JFRDemo.java
native-image --enable-monitoring=jfr,jmxserver,jvmstat  JFRDemo

运行&查看效果

  • 运行
    运行的时候添加jfr配置运行构建的二进制应用就可以了,应用启动之后就会退出
 
 ./jfrdemo -XX:StartFlightRecording="filename=recording.jfr"
  • 查看

 

说明

graalvm 的native-image 是一个很不错的java 应用运行模式,但是对于性能调优还是比较重要的,jfr 是一个特别好的选择,而且对于系统资源占用比较底
传统java 应用,我比较喜欢使用jprofiler,也比较期待jprofiler后续对于graalvm 的native-image 有相关监控方面的支持,毕竟优化以及异常排错在日常开发
中还是很重要的

参考资料

https://www.graalvm.org/latest/reference-manual/native-image/guides/build-and-run-native-executable-with-jfr/