创新的 GCIH(GC invisible heap)技术,实现了 off-heap,将生命周期较长的 Java对象从heap中移动到 heap 之外,并且GC不能管理 GCIH 内部的 Java 对象,降低了 GC 的回收频率和提高GC的回收效率。
GCIH 中的对象可以多个Java虚拟机进程之间共享。
使用crc32指令实现JVM intrinsic 降低JNI的调用开销。
PMU hardware 的Java profiling tool 和诊断协助功能
针对大数据场景的ZenGC
缺点:硬件严重依赖Intel的cpu,损失兼容性。
Dalvik VM谷歌开发,应用于Android系统,并且在Android 2.2中提供了JIT。只能称虚拟机,而不是“Java虚拟机”,没有遵循Java虚拟机规范。
不能直接执行Java的class文件。
基于寄存器架构,而不是栈的架构。
执行的是编译以后的dex(dalvik Executale)文件,执行效率比较高。dex文件可以通过Class文件转化而来,使用Java语法编写应用程序,可以直接使用大部分Java API。
Android 5.0 使用提前编译(Ahead of Time Compilation,AOT)的ART VM 替换Dalvik VM。
PS:Android文件.apk修改文件后缀为.zip,解压之后就是很多文件,当然也包括.dex文件。
Graal VM理念:“Run Program Faster Anywhere”。
在Hotspot VM基础上增强,跨语言全栈虚拟机,可以作为任何语言的运行平台。
支持不同语言混用接口和对象
原理是将这些语言的源代码或者中间格式,通过解释器转化成为一种Graal VM接受的中间格式。
在运行时能够进行即时编译优化,获得更优秀的执行效率。
最后:具体JVM的内存结构,取决于其实现,不同产商或者同一个产商的不同版本,都可能存在一定的差异。一般我们说的,是指Hotspot虚拟机。
【作者简介】:
秦怀,公众号【秦怀杂货店】作者,技术之路不在一时,山高水长,纵使缓慢,驰而不息。个人写作方向:Java源码解析,JDBC,Mybatis,Spring,redis,分布式,剑指Offer,LeetCode等,认真写好每一篇文章,不喜欢标题党,不喜欢花里胡哨,大多写系列文章,不能保证我写的都完全正确,但是我保证所写的均经过实践或者查找资料。遗漏或者错误之处,还望指正。
2020年我写了什么?