《深入解析Android虚拟机》Dalvik和Art基础:读书笔记

1.Dalvik虚拟机和普通java虚拟机的区别:

    a.dalvik虚拟机基于寄存器,java虚拟机基于栈

    b.dalvik会通过dx将所有的class打包到dex文件,普通的java虚拟机将所有的class打包到jar文件

    c.dalvik和普通java虚拟机使用的字节码不同,即class文件的格式不同,无法互通  

2.每一个Android应用都运行在一个Dalvik以及Art虚拟机实例里,每个虚拟机实例都是一个独立的进程空间,每一个Android线程都依赖于独立的linux线程。

3 .Zygote进程在系统启动时创建,每一个Android应用的进程都是从Zygote进程fork出来的,因此可以共享Zygote进程已经加载的类,同时加快启动速度,共享代码空间。

4.从init.rc可以看到,zygote进程运行的可执行文件是是/system/bin/app_process,该进程会通过jni加载dalvik或者art虚拟机的so库,因此,zygote进程可以认为是系统启动后的第一个虚拟机进程。

5.Art虚拟机作为Dalvik的替代,其将dex中字节码的优化从应用运行时提前到应用安装时。

6. Art虚拟机完全兼容Dalvik虚拟机的字节码,也就是可以运行dex文件中的字节码。

发布了87 篇原创文章 · 获赞 16 · 访问量 16万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章