python 分代回收机制

前言

我们已经知道,python垃圾回收机制(Garbage Collection,简称GC)主要是以下2个:

  1. 引用计数器机制
  2. 垃圾回收机制

如有需要了解这两个机制的详细内容,请参考之前的文章:
python垃圾回收机制之引用计数器
https://blog.csdn.net/qq_40883524/article/details/131923549?spm=1001.2014.3001.5501
python内存回收机制–垃圾回收机制
https://blog.csdn.net/qq_40883524/article/details/131923854?spm=1001.2014.3001.5501
通过这两个机制,python会自动帮我们实现垃圾回收。
如果我们每创建一个对象,就对其进行垃圾检测,这样做是非常耗时且浪费性能的,那python提供了哪些机制来减少垃圾检测的频率呢?

1,分代回收机制

原理

  1. 默认一个对象被创建出来后,属于0代
  2. 如果经历这一代垃圾回收后,依然存活,则划分到下一代
  3. 垃圾回收的周期顺序为:
    a,0代“垃圾回收”一定次数,会触发0代和1代回收
    b,1代“垃圾回收”一定次数,会触发0代 1代和2代回收

也就是说,0 1 2代越往后,检测次数会越少

流程图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python的垃圾回收机制主要采用了引用计数机制为主,标记-清除和分代收集(隔代回收)两种机制为辅的策略。引用计数器是其中的核心机制,它会记录每个对象的引用数量。当一个对象的引用数量变为0时,说明该对象不再被使用,垃圾回收机制会自动将其释放。这种机制的好处是实时性强,可以及时回收不再使用的对象,但它无法解决循环引用的问题。 为了解决循环引用的问题,Python还引入了标记-清除机制。标记-清除机制会定期扫描所有的对象,标记出仍然被引用的对象,然后清除未被标记的对象。这样可以解决循环引用导致的内存泄漏问题。 另外,Python还采用了分代收集机制,也就是隔代回收。这种机制将对象分为不同的代,一般是0代、1代和2代。新创建的对象会被放入0代,经过一定的时间或者回收次数后,如果仍然存活,就会被提升到更高的代。这样可以根据对象的存活时间来决定是否进行垃圾回收,提高回收效率。 总的来说,Python的垃圾回收机制通过引用计数、标记-清除和分代收集三种策略相结合,实现了自动回收不再使用的对象,减轻了开发者的负担,提高了代码的效率。\[1\]\[2\]\[3\] #### 引用[.reference_title] - *1* [一文读懂Python垃圾回收机制【收藏版】](https://blog.csdn.net/huachao1001/article/details/125722825)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [python垃圾回收机制](https://blog.csdn.net/m0_51691302/article/details/123117569)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值