python 内存管理(垃圾回收机制)

官方原话

How does Python manage memory?

The details of Python memory management depend on the implementation. The standard implementation of Python, CPython, uses reference counting to detect inaccessible objects, and another mechanism to collect reference cycles, periodically executing a cycle detection algorithm which looks for inaccessible cycles and deletes the objects involved. The gc module provides functions to perform a garbage collection, obtain debugging statistics, and tune the collector’s parameters.

python的内存管理主要分为两部分

  1. 引用计数为主

一个对象被引用,计数+1,反之亦然。 python会定时去扫描所有对象,发现计数为0,则会被回收

  1. 标记清除与分代回收

标记清除

引用计数无法解决循环引用的问题,所以引入标记清除机制(这个机制大概是这样的,构建一个有向图,途中的每个节点都是一个对象,遍历这个图,删除所有不可达的节点)

分代回收

为了防止扫描过于频繁,引入该机制。对象一共分为3代,每个对象被扫描一定次数,他的代数会增加,说明这个对象被频繁使用,代数越高,扫描评率越低。

参考:https://mp.weixin.qq.com/s?__biz=Mzg3NjE1NDU5OQ==&mid=2247487518&idx=1&sn=af21f11ac31b5f768015b0b1dbef42f9&chksm=cf37cb96f84042805def96a542a32fdb71a5bb84c4f5679ea658e132c0f153bbb7617b6d3f2a&scene=27

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值