1、Android体系结构
底层:Linux kernel(linux内核) --> libraries(C封装的对底层linux内核操作库) --> android runtime(android运行时,android dalvik虚拟机以及核心lib包,通过JNI调用C代码操作硬件)--> Application framework(google andriod sdk)--> applications(andriod应用程序代码)
注:Android中的Java代码需要运行在Java虚拟机中,而Java虚拟机通过JNI调用底层C代码操作硬件。Java lib操作google封装的调用底层的C代码
2、Dalvik虚拟机和JVM虚拟机的区别
- Dalvik基于寄存器,在虚拟机里面的虚拟CPU中分配了多个寄存器,而JVM基于栈,dalvik直接访问寄存器,而不需要访问堆栈,速度更快
- JVM编译完成后生成一个个的class字节码文件,在使用的时候加载到内存中。而dalvik编译后将所有class文件转换为一个dex文件,这个文件包含了所有的类。当编译器将java文件编译成class文件后,dalvik虚拟机将class文件重新将class文件编译为dex字节码文件,并删除class文件。常量池保存了所有类中的常量信息。这样减少文件个数i/o操作,提交类查询的速度,引入的常量池等概念,提高查询速度,执行的效率更高
- dalvik支持在有限的内存中运行多个虚拟机实例,并且每一个dalvik虚拟机应用作为一个独立的linux进程处理,这样防止在某一个虚拟机崩溃导致所有的程序都关闭
时间: 2024-10-12 13:12:14