1.引用计数

  • 增加引用计数

    • 对象被创建
      x = 3.14
    • 或另外的别名被创建
      y = x
    • 或作为参数被传递(新的本地引用)
      foobar(x)
    • 或成为一个容器的对象
      myList = [123, x, ‘xyz]
  • 减少引用计数

    • 一个本地引用离开了其作用范围。比如foobar()函数结束时
    • 对象的别名被显示销毁
      del y # 执行del会产生两个结果
    • 对象的一个别名被复制给其他对象
      x = 123
    • 对象从一个窗口对象中移除
      myList.remove(x)
    • 窗口对象本身被销毁
      del myList

2.循环引用

一个循环引用发生在当你至少有两个对象互相引用时,也就是即使其他所有引用都消失,其引用计数依然不为0,这时候仅靠引用计数显然是不够的

list1 = []
list2 = []
list1.append(list2)
list2.append(list1)

Python的垃圾收集器实际上是一个引用计数器和一个循环垃圾收集器,这种情况就需要循环垃圾收集器来处理了。

3.标记-清除

标记-清除机制,顾名思义,首先标记对象(垃圾检测),然后清除垃圾(垃圾回收)。
将引用计数为0的全都打上标记,等待GC循环检测回收

4.分代回收

分代技术简单点说就是:对象存在时间越长,越可能不是垃圾,应该越少去收集。
这样的思想,可以减少标记-清除机制所带来的额外操作,极大提高效率。

Python垃圾收集机制相关推荐

  1. python回收机制

    目录 Python的垃圾回收机制 引子: 一.什么是垃圾回收机制? 二.为什么要用垃圾回收机制? 三.垃圾回收机制原理分析 1.什么是引用计数? 2.引用计数扩展阅读?(折叠) Python的垃圾回收 ...

  2. python异常机制

    python异常处理机制 1.1python的内置异常 当我们在运行代码的时候一旦程序报错,就会终止运行,并且有的异常是不可避免的,但是我们可以对异常进行捕获,防止程序终止. python的内置异常是 ...

  3. Python培训教程分享:Python异常机制

    ​ 在学习Python技术的时候,我们经常会遇到一些异常,例如导致程序在运行过程中出现的中断或退出,我们都称之为异常,大多数的异常都不会被程序处理,而是以错误信息的形式展现出来.本期Python培训教 ...

  4. 67.Java垃圾收集机制\对象引用\垃圾对象的判定\垃圾收集算法\标记—清除算法\标记—整理算法\分代收集\垃圾收集器\性能调优

    67.Java垃圾收集机制 67.1.对象引用 67.2.垃圾对象的判定 67.3.垃圾收集算法 67.3.1.标记-清除算法 67.3.2.标记-整理算法 67.3.3.分代收集 67.4.垃圾收集 ...

  5. 【Python数据结构】 抽象数据类型 Python类机制和异常

    这篇是<数据结构与算法Python语言描述>的笔记,但是大头在Python类机制和面向对象编程的说明上面.我也不知道该放什么分类了..总之之前也没怎么认真接触过基于类而不是独立函数的Pyt ...

  6. python导入机制及importlib模块

    文章目录 写在篇前 import 关键字 先导概念 namespace & scope Module & Packages module packages regular packag ...

  7. 老郭的《Dalvik虚拟机垃圾收集机制简要介绍和学习计划》

    伴随着"Dalvik is dead,long live Dalvik"这行AOSP代码提交日志,在Android5.0中,ART运行时取代了Dalvik虚拟机.虽然Dalvik虚 ...

  8. Java垃圾收集机制

    本文是<深入理解Java虚拟机>一书中第三章的读书总结. 前面介绍了Java内存结构和HotSpot虚拟机在堆内存中管理对象的过程.不过,在Java程序中对象的创建是非常频繁的,而内存的大 ...

  9. javascript V8引擎垃圾收集机制

    V8引擎使用的垃圾收集机制是标记清除,那么javascript在垃圾收集会阻塞其他程序执行.V8引擎使用了增量标记的方式进行优化 增量标记 V8不是直接对整个栈堆遍历标记,而是标记一部分堆后回复正常执 ...

最新文章

  1. 也欢迎您访问我的个人主页http://www.april1985.com(原hesicong.com或april1985.com)
  2. java8新特性: lambda表达式:直接获得某个list/array/对象里面的字段集合
  3. mysql获取服务器的剩余空间_mysql服务器内存耗尽,并占用大量swap
  4. 360极速浏览器进行打印时会带出网页地址问题
  5. 手写简版spring --2--实现Bean的定义、注册、获取
  6. 交换排序 java_java实现交换排序
  7. php中update()函数,update_option()函数
  8. 光敏电阻控制led亮度程序_单片机开发系统学习LED亮度控制原理
  9. 大号字代码php,如何用QQ发超大汉字_php
  10. 细胞增殖曲线_【音频】第6章 细胞的生命历程 第1节 细胞的增殖
  11. c语言编写界面图形表示,「分享」C语言如何编写图形界面
  12. 透视投影中3DMM系数的求解
  13. node文件上传插件formidable的使用
  14. 营业执照遗失该如何处理
  15. 【转】互操作性的区块链系统设计理念
  16. 卫星影像领域的深度学习数据和模型项目
  17. flowchart.fun 语法
  18. ASP.NET c# 实验日记(1)
  19. 自动检测图像中的圆形或圆形对象
  20. 微信3d小游戏(three)-逻辑设计与场景添加

热门文章

  1. C语言中printf打印形式(%02X, %2X, %-2X, %.nf, %m.nf, %e, %m.ne, %2d, %-2d, %02d, %.2d)
  2. mysql导入数据报错ERROR 1290 (HY000): The MySQL server is running with the --secure-file-priv option so it
  3. 建筑八大员培训湖北施工员培训建筑施工企业员工流失的原因
  4. caffe+cuda6.5+cudnn7.0+opencv3.0搭建经验记录
  5. iPhone连接Mac之后频繁闪烁的解决方法
  6. ipad发布会ipad_如何在iPad上调试网站
  7. 说真的,喜欢偶尔这样的激情解说!
  8. 轻触开关的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  9. Python编程:itertools库排列组合
  10. 38、程序中的三国天下