zoukankan      html  css  js  c++  java
  • Python的垃圾回收机制

    Python的垃圾回收机制有两种(也可以说一种:叫引用计数): 一是引用计数, 二是隔代回收.

    1. 引用计数

    引用计数原理: 当数据的引用数变成0的时候,python解释器就认为这个数据是垃圾,进行垃圾回收,释放空间.

     

    1. 分代回收

    分代回收是用来解决交叉引用(循环引用),并增加数据回收的效率. 原理: 通过对象存在的时间不同,采用不同的算法来 回收垃圾. 形象的比喻, 三个链表,零代链表上的对象(新创建的对象都加入到零代链表),引用数都是一,每增加一个指针,引用加一,随后python会检测列表中的互相引用的对象,根据规则减掉其引用计数. GC算法对链表一的引用减一,引用为0的,清除,不为0的到链表二,链表二也执行GC算法,链表三一样. 存在时间越长的数据,越是有用的数据.

     

     

    标记清除

    为什么python没有标记清除机制,

        因为python的标记就是引用数,是模仿Ruby的标记清除机制,为什么Ruby要用标记清除机制,因为Ruby在代码开始执行之前就已经创建了成百上千个对象,对有指针的对象进行标记(这个标记是Ruby解释器制作的),没有指针的对象进行清除,并送回可用列表中,从而节约计算机资源.

    标记清除是Ruby的垃圾回收机制,标记(通过M标记)可达的数据, 会清除不带M标记的数据.

     

    Ruby使用链表追踪未使用的对象, python的分代回收使用链表追踪使用的对象

  • 相关阅读:
    GLSL预定义变量
    GLSL 内建函数
    GLSL语言基础
    svn:revert to this version 和 revert changes from this version的区别
    win7下搭建opengles2.0编程环境
    iconv字符编码转换
    矩阵-DirectX与OpenGL的不同
    NHibernate分页
    Web网站压力测试工具
    winform系统自动登录实现
  • 原文地址:https://www.cnblogs.com/ppansj/p/7966785.html
Copyright © 2011-2022 走看看