背景
java 的编译器
C1,C2
C1不进行优化,C2会进行优化。热点代码缓存,JIT等等。
C2 C++写的,太复杂,不维护,而且有bug
java语言一直在进步,C2没有办法维护,需要一种新的编译器来进行支持,所以有了GraalVM
事实
JIT,性能优化、垃圾回收等代表的特性需要一段时间来达到最佳性能。
java是面向大规模、长时间的服务应而设计。矛盾
微服务时代对启动速度、达到高性能的时间提出了新的要求。
问题根源
Java离不开虚拟机(JVM)
解决方案
革命派: 直接而干掉Java和Java生态。(Golang的诞生)
保守派: 保留原有主流Java生态和技术资产,朝着微服务、云原生环境靠拢(GraalVM)
GraalVM的技术
AOT技术: ahead of time
编译成native代码花费时间太大,这部分时间无法节省,所以引入AOT,减少这部分时间。
协程
- C++
微软的Stackless模式单台1000万个链接。
腾讯微信团队:libco - Java
JVM(Loom:fibers轻量级用户线程)
基于JNI
操控字节码
GraalVM介绍
C2编译器比较缓和,GraalVM比较激进
JVMCI: JVM compile interface