Python 垃圾回收机制

Python采用的是引用计数为主,标记-删除、分代收集为辅的策略

三种机制的作用:
*引用计数机制:用来跟踪和回收垃圾

*标记-清除 :用来解决容器对象可能产生的循环引用问题

*分代收集 :用空间换时间的方法提高回收效率

引用计数机制: reference count
PyObject是每个对象必有的内容,ob_refcnt就是作为引用计数。当对象有新的引用时+1,引用的对象被删除-1,当ob_refcnt为0时,对象的生命结束。
引用计数机制 无法处理循环引用导致内存泄漏
(内存泄漏:由于疏忽或错误导致程序未能释放已经不再使用的内存的情况,造成内存的浪费,导致程序运行速度减慢甚至系统奔溃。)

**标记清除机制:**按需分配,等到没有空闲内存的时候,从寄存器和程序栈的引用出发,遍历以对象为节点,以引用为边构成的图,把所有可以访问的到的对象打上标记,然后把所有没有标记的对象释放。

分代回收机制:
对象存活时间越长,认为该对象越不可能是垃圾,收集的频率越低。
将内存根据对象存活时间划分为不同的集合,每个集合称为一个代,Python将内存分为3代,0年轻代、1中年代、2老年代,新创建的对象都会被分配在0年轻代,当年轻代达到上限就触发垃圾回收机制,释放可以回收的内存,没有被回收的对象将被转移到1中年代,中年代同理。以空间换时间,减少了标记清除的操作,增加了垃圾回收的效率。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值