JVM和Dalvik区别
1、Dalvik 基于寄存器,寄存器是CPU内部的一块内存空间,访问速度快,而 JVM 基于栈,栈是内存中的一块连续的存储空间,访问速度比寄存器要 慢。基于寄存器的虚拟机对于更大的程序来说,在它们编译的时候,花费的时间更短。
2、Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。
3、Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。
4、不同于Java虚拟机运行java字节码( .java -> .class),Dalvik虚拟机运行的是其专有的文件格式DEX(Dalvik Executable)
2、Dalvik主要是完成对象生命周期管理,堆栈管理,线程管理,安全和异常管理,以及垃圾回收等等重要功能。
3、Dalvik负责进程隔离和线程管理,每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。
4、不同于Java虚拟机运行java字节码( .java -> .class),Dalvik虚拟机运行的是其专有的文件格式DEX(Dalvik Executable)
( .java -> .class -> .dex),Dex文件格式可以减少整体文件尺寸,提高I/o操作的类查找速度。
5、所有的Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制
5、所有的Android应用的线程都对应一个Linux线程,虚拟机因而可以更多的依赖操作系统的线程调度和管理机制
6、Dalvik是一般由C或C++编写,JVM一般是C++或java编写
7、如果JVM不小心死掉,则上面运行的所有Java程序都死掉,而Dalvik死掉了,只有一个对应的应用死掉,其他没有影响。