堆:由编译器自动分配的,存放函数的参数值和局部变量,
栈:一般由程序员分配释放,如果没释放,可能程序结束后会被OS自动回收。 总结每个线程都有一个栈,但是每个程序通常都只有一个堆
jvm java虚拟机 sun
dvm sdk虚拟机 google
区别:基于架构不同,jvm 基于栈架构,栈位于内存上的一个空间,执行指令操作,会向cpu寻址
dvm基于寄存器架构,寄存器为cpu组成部分,执行指令操作无需寻址直接执行。
执行文件的格式不同,jvm执行的是多个.class文件。dvm执行的是一个.dex文件
art模式:程序在安装时预编译读取,将代码转化为机器码。
好处:无需时时转换,运行速度快。
缺点:安装速度慢,由于转换机器码,所以占用略高的存储空间。
总结:空间换时间概念! |