美文网首页
python垃圾回收机制

python垃圾回收机制

作者: _karen | 来源:发表于2020-08-25 00:10 被阅读0次

基本机制

  • 引用计数器为主、分代回收和标记清除为辅

1.引用计数器

1.双向环装链表refchain

在python中创建的任何对象都会放在refchain链表中,也就是说它保存着所有的对象。

image.png

**refchain会创建一些数据,源码中,PyObject和PyVarObject是基石,他们保存这其他数据类型公共部分,例如:每个类型的对象在创建时都有PyObject中的那4部分数据[上一个对象struct _object *_ob_prev;、下一个对象 struct _object *_ob_next、该对象的引用ob_refcnt、数据类型 *ob_type];list/set/tuple等由多个元素组成对象创建时都有PyVarObject中的那5部分数据[上一个对象struct _object *_ob_prev;、下一个对象 struct _object _ob_next、该对象的引用ob_refcnt、数据类型 ob_type、数据大小ob_size]。

1.2 引用计数器

引用计数器ob_refcnt:用来保存当前对象的引用计数器,顾名思义就是自己被引用的次数。当值被多次引用时候(比如 拷贝 赋值),不会在内存中重复创建数据,而是引用计数器+1 。 当对象被销毁时候同时会让引用计数器-1。

  • 创建对象:
    1.在双向循环列表refchain中,创建对象
    2.将引用计数器ob_refcnt的值设置为1
  • 删除对象
    1.销毁对象,释放内存
    2.引用计数器ob_refcnt-1
    如果引用计数器为0,则将对象从refchain链表中摘除,同时在内存中进行销毁(暂不考虑缓存等特殊情况)。

相关文章

  • python和ruby的GC

    Python垃圾回收机制--完美讲解!

  • python拾遗7 - 垃圾回收

    垃圾回收机制 相比 C++ 的手动回收内存,python 的垃圾回收机制可谓是省心省力,判断是否回收一块内存,主要...

  • python面试题(五)

    1、简述python引用计数机制(联想到垃圾回收机制)python垃圾回收主要以引用计数为主,标记-清除和分代清除...

  • Python垃圾回收机制

    垃圾回收机制: Python中的垃圾回收算法是采用引用计数, 当一个对象的引用计数为0时, Python的垃圾回收...

  • Python的垃圾回收机制,可变类型,不可变类型

    Python的垃圾回收机制 什么是GC(垃圾回收机制),出现的原因 GC:说白了就是内存自动管理机制.它的出现的原...

  • python学习一

    1 python 如何管理内存 对象引用计数机制,垃圾回收机制,内存池机制 一。对象引用机制 python内部引用...

  • python的GC

    python垃圾回收机制 Python GC 主要是引用计数来跟踪和回收垃圾。 在引用技数的基础上, 通过"标记-...

  • Day11-Python垃圾回收机制笔记

    Python中的垃圾回收是以引用计数为主,标记清除和分代回收为辅。 【引用计数】 Python默认的垃圾收集机制是...

  • Python36_垃圾回收

    注意,垃圾回收机制的测试建议以交互模式测试 ps:对于垃圾回收机制,有的python版本默认开了,有的则默认没有开...

  • JavaScript的垃圾回收机制

    大纲 1、认识垃圾回收机制2、垃圾回收机制的原理3、垃圾回收机制的标记策略4、垃圾回收机制与内存管理 1、认识垃圾...

网友评论

      本文标题:python垃圾回收机制

      本文链接:https://www.haomeiwen.com/subject/ixtajktx.html