36 | SubstrateVM:AOT编译框架
该思维导图由 AI 生成,仅供参考
- 深入了解
- 翻译
- 解释
- 总结
SubstrateVM是GraalVM中的Ahead-Of-Time(AOT)编译框架,与即时编译相对立。AOT编译在程序运行之前将字节码转换为机器码,提高启动性能和降低内存开销。相比即时编译,AOT编译无法进行虚方法内联和基于程序profile的优化,但能避免CPU资源耗费。Java 9引入了实验性AOT编译工具,借助Graal编译器将Java类文件转换为机器码。SubstrateVM是基于Graal编译器的AOT编译框架,提供高启动性能、低内存开销,并能无缝衔接C代码的Java运行时。它脱离了HotSpot虚拟机,要求目标程序是封闭的,通过静态分析推算出所有虚方法调用的目标方法。SubstrateVM主要用于Java虚拟机语言的AOT编译,启动时间和内存开销较少,适合嵌入其他系统。运行在SubstrateVM上的Graal.js执行时间和内存开销都十分优越,适合嵌入至Oracle数据库中运行任意语言的预储程序。 SubstrateVM的轻量特性使其适合嵌入其他系统中。Metropolis项目旨在使用Java开发Java虚拟机,提升可维护性和开发效率。该项目探索部署AOT编译的Graal编译器的可能性,通过SubstrateVM技术将整个Graal编译器AOT编译为机器码,从而提升HotSpot虚拟机的启动性能。总体而言,SubstrateVM和Metropolis项目的结合将为Java开发者带来更高的性能和更便捷的开发体验。
《深入拆解 Java 虚拟机》,新⼈⾸单¥59
全部留言(7)
- 最新
- 精选
- Jimbol老师好,写了这么多期,老师辛苦了!老师能否多写一些关于jvm性能优化调优,或者开发中常见的坑呢?太深奥的内容对一线开发来说好遥远
作者回复: 嗯嗯,等我歇一段时间哈,这连续这么多期写得太累了。
2018-10-12313 - 横云断岭请问SubstrateVM怎样调试?因为传统的java排查工具都失效了。使用方更加关注的是易用性。
作者回复: 对于能够被SVM编译的(也就是不包含动态类加载等)Java应用程序而言,原则上SVM和HotSpot VM应该是等价的,能在HS跑就应该能在SVM上跑,否则就是SVM的bug了。 如果想要调试SVM本身或者SVM编译的Java应用的话,只能上GDB了。如果是SVM编译的Truffle语言的话,我们在Truffle语言层面实现了Chrome DevTools Protocal,可以直接用Chrome调试。
2018-10-161 - 嘿,小战士编辑的多彩图片从开始用到了结束。相当统一⌓‿⌓
编辑回复: 😄
2023-01-27归属地:四川 - wahaha老师,SubstrateVM以后会支持32位的X86和ARM处理器吗?
作者回复: 32位X86暂时没计划,ARM应该会有,取决于RedHat以及我们负责Aarch64的工程师的效率。
2018-10-13 - dyangx今后有可能java 11会收费吗2018-10-2124
- BD在Java开源框架源码里经常看到一种写法,object a=new object; object b=a; 接下来直接操作b。我想问这里为什么不直接操作a非要“多此一举”的赋值给b再操作b呢2019-01-2312
- NullPointer谢谢老师辛勤付出,对于JVM有了通盘的理解,也有jvm未来发展。svm无意之间也为java-on-java做出不少努力,😁2019-10-081