JVM DVM ART初探

学习自

https://blog.csdn.net/itachi85/article/details/72861179


JVM解释器基于栈

DVM解释器基于寄存器,速度快


JVM .java->.class->.jar

DVM .java->.class->.dex


DVM每一个进程都是一个虚拟机,一个进程crash不影响其他进程的工作

DVM由Zygote fork自身创建出子进程


DVM的运行时堆

Zygote Space里面包含在fork进程的时候,创建的各种对象,不会触发GC,所有进程共享

Allocation Space在zygote fork第一个子进程前创建的,在这里我们进行对象的分配释放

辅助数据结构:

card table记录垃圾信息

heap bitmap:有两种,第一种记录上次gc存活的对象,第二种记录这次gc存活的对象

mark stack:用来遍历存活的对象,与gc mark相关的算法有关


ART在应用安卓的时候,进行一次编译,把字节码编译成机器码,以后都使用机器码了。不像DVM需要每次编译


ART gc分Mark-Sweep GC和Compacting GC

如果采用的是Mark-Sweep GC,运行时堆主要是由四个Space和多个辅助数据结构组成,四个Space分别是Zygote Space、Allocation Space、Image Space(存放预加载类,也是进程共享的)和Large Object Space

除了这四个Space,ART的Java堆中还包括两个Mod Union Table,一个Card Table,两个Heap Bitmap,两个Object Map,以及三个Object Stack

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值