美文网首页
Python中垃圾回收

Python中垃圾回收

作者: MontyOak | 来源:发表于2017-11-11 19:30 被阅读18次

熟悉C语言的同学可能对对象的构造和析构比较熟悉。所谓构造函数,就是对类进行初始化,而析构函数则是删除对象,并提供一系列的清扫工作。
对比C语言,Python中的__new____init__基本可以完成构造函数的工作,即初始化一个对象。而Python对于对象的垃圾回收则由语言层面来做,不用开发者显示操作。今天就来简单说一下,Python中的垃圾回收。
Python中的垃圾回收主要通过引用计数、标记清除、分代技术来实现的:

  1. Python中每个对象都有一个叫做ob_refcnt的属性,用来对该对象的引用进行计数,当一个对象有了新的引用时(最常见的是被赋值给了一个变量),ob_refcnt属性加一;相应的,当一个对象的某个引用被删除了,它的ob_refcnt会减一。当ob_refcnt减到0的时候,就可以将这个对象清除了。这种方法就叫做标记清除。它的优点是简单高效,缺点在于对于循环引用的失效。
  2. 所谓标记清除法,可以理解是先按需分配,等到需要清理空间的时候,去遍历以对象为节点,引用为边的图,将所有可以被访问到的对象标记,未被标记的对象则被清除。这种方法可以解决循环引用带来的潜在问题。
  3. 分代技术,将所有对象按照存活时间分为不同的“代”,垃圾回收频率随着“代”的存活时间增加而减少。这种方法默认的原则是存活越久的对象,需要被垃圾回收的概率就越低。由于提供了按“代”回收的思路,在一定程度上减小了垃圾回收所需要操作的空间范围,提高了垃圾回收的效率,缺点在于某些高“代”的垃圾不能被实时清除,也就是牺牲了部分垃圾回收的效果来换取垃圾回收的效率的提升。

相关文章

  • Python垃圾回收机制

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

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

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

  • Python中垃圾回收

    熟悉C语言的同学可能对对象的构造和析构比较熟悉。所谓构造函数,就是对类进行初始化,而析构函数则是删除对象,并提供一...

  • python和ruby的GC

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

  • 深入理解Python内存管理与垃圾回收,再也不怕问了(二)

    垃圾回收机制 来看一下Python中的垃圾回收技术: 引用计数为主 标记清除和分代回收为辅 如果一个对象的引用计数...

  • python 垃圾回收机制(GC)

    python 中的垃圾回收机制 Python的GC模块主要运用了“引用计数”(reference counting...

  • python的GC

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

  • 5.5-GC、分支、循环

    1.垃圾回收GC(内存管理)——JAVA核心思想 当Python中的对象越来越多,占据越来越大的内存,启动垃圾回收...

  • python拾遗7 - 垃圾回收

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

  • Python 垃圾回收学习

    垃圾回收机制一般有两个阶段:垃圾检测和垃圾回收。Python GC 主要使用引用计数来跟踪和垃圾回收。在引用计数的...

网友评论

      本文标题:Python中垃圾回收

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