聊聊对GraalVM的理解
一句话: GraalVM是高性能的Java虚拟机,还支持多语言开发和编译
特点:
1.能运行多种语言,支持跨语言互调,共享数据
2.支持即时编译(JIT模式),性能极高,内存占用低。 支持预编译,冷启动快
3.垃圾回收效率高,降低系统延迟,提高吞吐量
传统JVM运行过程
java源代码(.java) -> 字节码文件(javac) -> 机器码 (cpu可执行)
执行过程中要用到某个类User
1.类加载过程,类加载器 将User类的字节码文件 从磁盘搬运到内存(方法区)。 (类首次被加载到方法区后,后续使用不需要再加载,只需解释器解释即可)
2.解释器将字节码文件解释成机器码,提供一次性运行。
JIT即时编译:将高频使用的类,缓存机器码到堆外内存,避免解释器频繁解释,大幅提高效率
GraalVM的优化
-
一方面提供更先进的JIT编译器(Graal编译器)
-
另一方面提供AOT编译(Native Image),可以彻底去掉JIT,生成独立可执行文件
Graal编译器比传统JIT:
1.部分逃逸分析 Graal能精细判断,只让逃逸的部分走堆分配,不逃逸的拆成栈上变量 (逃逸分析 = 判断某个对象是方法内的对象用完即销毁还是方法外全局的对象,GC开销不同)
2.用Java写的,比C2的C++代码更容易维护和演进
GraalVM对云原生的支持
把Java应用提前编译成独立的小体积可执行文件,实现“毫秒级启动、极低内存占用”
GraalVM 是实现更快启动时间、更低内存使用、原生镜像生成和无缝多语言支持的绝佳选择。

浙公网安备 33010602011771号