点击“开发者技术前线”,选择“星标????”
让一部分开发者看到未来
回复“666”,获取一份专属大礼包
JVM、Dalvik、ART三者的原理和区别?
JVM是指某个特定的JAVA虚拟机实现 是一个通用的范畴
Dalvik是早期用来做Android专用的虚拟机用来运行DEX格式的程序 允许运行多个虚拟机实例 每一个应用作为单独的linux进程运行 运行方式是会将dex代码转为微处理指令(边解释边执行)
也使用到了JIT(JustInTime)将代码编译成nativecode提高执行效率(运行时编译)
ART(Android Runtime)是使用了AOT(Ahead of Time)预编译在应用安装时就把字节码编译为机器码这样运行时就可以直接运行机器码执行效率更高但安装时间会慢
JVM:是Java Virtual Machine的缩写,其并不是指某个特定的虚拟机实现,而指任何能够运行Java字节码(class文件)的虚拟机实现,比如oracle的Hotspot VM
Dalvik:是Google写的一个用于Android的虚拟机,但其严格来说并不算JVM(没有遵守Java虚拟机规范,比如其字节码格式是dex而非class)
该虚拟机在5.0时被ART替代ART:是Android Runtime的缩写,严格来说并不是一个虚拟机,在4.4~6.0时采用安装时全部编译为机器码的方式实现,7.0时默认不全部编译,采用解释执行+JIT+空闲时AOT以改善安装耗时
ART在安卓4.4时加入,5.0取代dalvik作为唯一实现直到现在。
贴两篇官方文档,有兴趣的可以看看
Java 虚拟机规范:
https://docs.oracle.com/javase/specs/jvms/se12/html/index.html
Android Runtime (ART) 和 Dalvik:
https://source.android.google.cn/devices/tech/dalvik?hl=zh_cn
更多阅读查看:
面试官:不懂JVM ,就要30K? 史上JVM最最最完整深入解析
写在最后:
最后给读者整理了一份大厂面试真题,需要的可扫码回复“大厂面试”获取。
— 完 —点这里????关注我,记得标星呀~前线推出学习交流一定要备注:研究/工作方向+地点+学校/公司+昵称(如JAVA+上海
扫码加小编微信,进群和大佬们零距离
END
后台回复“电子书” “资料” 领取一份干货,数百面试手册等历史推荐字节一面:synchronized和volatile关键字的区别
面试官:不懂JVM ,就要30K? 史上JVM最最最完整深入解析
面试经典:HashMap 容量为什么总是为 2 的次幂?
好文点个在看吧!