Android与iOS内存回收机制区别

iOS的内存回收机制

IOS采用引用计数算法回收内存,当对象引用计数为0时,对象会执行反初始化方法并被回收。如果两个对象互相引用对方,就会造成循环强引用,导致内存泄漏。

Android内存回收机制

Android采用的是根搜索算法回收内存,该算法通过GC Roots作为起点搜索,搜索通过的路径称为引用链,当一个对象没有被GC Roots的引用链连接的时候,这个对象就会被回收。即使A和B两个对象互相引用对方,只要A和B都不在引用链上,这两个对象都会被回收。

下图中的每个圆节点代表对象,箭头代表可达路径,当圆节点与 GC Roots 存在可达路径时,表示无法回收(黄色圆节点),反之则可以回收(蓝色圆节点)。
在这里插入图片描述

GC Root

  • 虚拟机栈(栈帧中的局部变量)中的引用的对象。
  • 方法区域中的类静态属性引用的对象。
  • 方法区域中常量引用的对象。
  • 本地方法栈中 JNI(Native 方法)的引用的对象。
  • 运行中线程引用的对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值