阿里三面:JVM、Dalvik、ART三者的原理和区别?

点击“开发者技术前线”,选择“星标????”

让一部分开发者看到未来

回复“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

更多阅读查看:

               深入理解Java内存模型,应对35K的面试足够了

             面试官:不懂JVM ,就要30K? 史上JVM最最最完整深入解析

 写在最后:

 最后给读者整理了一份大厂面试真题,需要的可扫码回复“大厂面试”获取。


— 完 —点这里????关注我,记得标星呀~前线推出学习交流一定要备注:研究/工作方向+地点+学校/公司+昵称(如JAVA+上海
扫码加小编微信,进群和大佬们零距离

END

后台回复“电子书” “资料” 领取一份干货,数百面试手册等历史推荐字节一面:synchronized和volatile关键字的区别
面试官:不懂JVM ,就要30K? 史上JVM最最最完整深入解析
面试经典:HashMap 容量为什么总是为 2 的次幂?

好文点个在看吧!
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值