ART以及Dalvik知识的普及
来源:互联网 发布:jdk源码有哪些值得买 编辑:程序博客网 时间:2024/05/16 18:00
一、什么是Dalvik虚拟机?
虚拟机:就是把字节码转为机器能够识别运行的机器码的一个中间桥梁。
关于dalvik虚拟机,绕不过三个文件类型,分别是:.java、.class、.dex。
关于.java和.class文件有一个比较通俗的解释是:
*.java文件是人编写的,给人看的。
.class是通过工具处理.java文件后的产物,它是给VM看的,给VM操作的
至于.dex文件,这是由于早起手机内存不足,因此对JVM的一些地方进行了优化,从而没有采用.class文件而是采用.dex文件
二、什么是ART?
ART(Android RunTime)其实也是一种虚拟机,是Google新推出来想取代Dalvik的优化后的虚拟机,与Dalvik不同,ART采用的是Ahead -of -time(预先编译)的技术,所以通过ART得到的文件是.aot文件,google在Android4.4版本发出测试,5.0版本正式使用,一些比较老的手机可以在设置里进行二者的切换,但博主的小米android6.0已经没有这个切换选项,被固定成ART了。
三、ART相对于Dalvik做了哪些改进
ART最大的改变就是使用了预先编译技术。
- Dalvik是在应用运行时,Dalvik 对 Java Byte Code 进行解释执行,运行时编译,所以速度是是会比较慢的。而在ART中,他会一安装就用系统自带的dex2oat将dex编译成oat文件,运行的时候直接执行2进制码,这对于速度的提高的帮助是很大的。
- 虽然编译成oat文件,但是里面依旧会保留dex文件的,这无疑造成oat文件会比较大,之所以会保留dex文件有这么几点考虑:一.需要dex里面关于类的信息,用来支持java反射;二.需要dex里面调试的信息,调试的时候需要。
ART就垃圾回收机制进行了小幅度的改进。
对于Android2.3版本以后的GC,会在GC前和GC后有一定时间的阻塞代码运行,而ART只会阻塞一次代码的运行。ART安全性的改动。
- 安装时他会对dex进行更加严格的验证
- 他改正了原来Dalvik的一些规则:在Dalvik中,用默认访问权限修饰的包,不是这同一包里的子类还能访问和重载,这跟java是有冲突了,因此在ART中改过来了。
四、我们代码编写上需要注意什么么?
理论上不需要,因为我们打包完成的apk里面其实还是dex文件,后续的转换都是在安装的时候手机上的dex2oat进行的操作,因此我们无论是调试还是编码的时候基本是不需要改变的,当然如果我们的编码有对dex进行操作,那就要注意一下了。
参考文章:http://www.geekpark.net/topics/207621
0 0
- ART以及Dalvik知识的普及
- JVM、Dalvik以及ART的区别
- Dalvik ART的理解
- Android开发——JVM、Dalvik以及ART的区别
- Android开发——JVM、Dalvik以及ART的区别
- Art和Dalvik对比以及虚拟机的原理
- ART和Dalvik区别以及Android的几种进程
- Android开发——JVM、Dalvik以及ART的区别
- Android开发——JVM、Dalvik以及ART的区别
- Dalvik和ART的区别
- Dalvik和ART的区别
- Dalvik和ART的区别
- Dalvik与ART的区别:
- ART和Dalvik的比较
- Dalvik与ART的区别
- Dalvik和ART的区别
- Dalvik和ART的区别
- Android的ART和Dalvik
- centos6.5配置网卡:动态和静态配置
- 剑指OFFER-二维数组中的查找
- Castle Windsor 学习-----Installer的几种安装方式
- 数据库 隔离
- 实验吧登陆一下好吗??WP
- ART以及Dalvik知识的普及
- POJ3114 Countries in War 【强连通分量】
- 树形排序与堆排序
- IPython(jupyter)
- 我就是我
- 最短路径最大流的SAP算法
- Java集合框架学习---1.ArrayList和LinkedList
- 动态规划(01背包、完全背包、多重部分和、LCS、LIS、划分数、多重集组合数)
- 类(2)