gc机制

gc机制

  1. 引用计数法
  2. 三色标记法

目标是为了缩短STW(stop the world)时间,提高程序时序性。

引用计数法基本原理

内存小于32kb

有使用引用时 计数+1
释放、置nil计数-1
当引用计数0时,垃圾回收工作。回收内存
三色标记法基本原理

内存大于32kb

  1. 扫描与标记阶段
起初所有对象都是白色
扫描找出所有可达对象,标记为灰色,放入待处理队列
从队列提取灰色对象,将其所有引用对象标记为灰色放入队列,自身标记为黑色
直到所有灰色变成黑色。
写屏障监视对象内存的修改,重新标色。
  1. 清理阶段
此时只剩下白色和黑色对象,将白色对象的内存收回。将所有黑色对象变为白色对象,完毕。
注意点

写屏障

gc运行的过程中,可以监控内存中对象的修改,并对对象进行重新标记

对象

白色:待清理对象
灰色:标记的中间状态,是可达的
黑色:活跃对象,其引用对象都是灰色或黑色
Android的GC(Garbage Collection)机制是一种自动管理内存的方式,它能够在应用程序运行时动态分配和回收内存。Android系统中的GC是基于Java语言内存管理机制实现的,主要包括以下几个方面: 1. 引用计数法:引用计数法是一种简单的垃圾回收机制,当一个对象被引用时,计数器加1,当没有任何引用指向该对象时,计数器减1。如果计数器为0,则该对象被认为是垃圾,可以被回收。但是,由于在循环引用的情况下,计数器的值始终大于0,所以引用计数法并不适用于Android系统。 2. 标记-清除法:标记-清除法是一种比较常见的垃圾回收算法。它的基本思想是从根节点开始,标记所有可以被访问到的对象,然后清除所有未标记的对象。这种算法可以解决循环引用的问题,但是会产生内存碎片。 3. 复制算法:复制算法是一种将内存分为两个区域的垃圾回收算法,每次只使用其中一个区域,当这个区域用完时,将还存活的对象复制到另一个区域,然后清除当前区域中的所有对象。这种算法可以有效地解决内存碎片问题,但是需要两倍的内存空间。 4. 标记-整理法:标记-整理法是一种先标记所有可达对象,然后将所有存活对象移动到内存的一端,然后清除掉移动过程中未被标记的对象的垃圾回收算法。 在Android系统中,GC机制主要由Dalvik虚拟机和ART虚拟机实现。Dalvik虚拟机采用的是标记-清除算法,而ART虚拟机则采用了更加高效的标记-整理算法。无论采用哪种算法,GC机制都可以帮助开发者避免内存泄漏和内存溢出等问题,提高应用程序的稳定性和性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值