前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python垃圾回收机制

Python垃圾回收机制

作者头像
宇宙之一粟
发布2020-10-26 10:25:39
6440
发布2020-10-26 10:25:39
举报

内存管理是计算机科学的一个复杂领域,目前正在开发许多技术来提高其效率。

在这里插入图片描述

内存管理通常分为三个区域

内存管理通常分为三个区域,尽管区别有点模糊:

  • 硬件内存管理
  • 操作系统内存管理
  • 应用程序内存管理

管理内存的基本问题是知道什么时候保留它包含的数据,什么时候丢弃它,以便可以重用内存。这听起来很容易,但实际上是一个难题,它本身就是整个研究领域。在理想的世界中,大多数程序员都不必担心内存管理问题。不幸的是,在手动和自动内存管理中,不良的内存管理实践可以通过多种方式影响程序的健壮性和速度。

自动内存管理是一种服务,可以作为语言的一部分或作为扩展,自动回收程序不会再使用的内存。自动内存管理器(通常称为垃圾收集器,或简称为收集器)通常通过回收程序变量无法访问的块(即,后续指针无法访问的块)来完成其工作。

自动内存管理

自动内存管理的优点是:

  • 程序员可以自由地处理实际问题;
  • 模块接口更清洁;
  • 内存管理错误更少;
  • 内存管理通常更有效。

自动内存管理的缺点是:

  • 内存可能会保留,因为它可以访问,但是不会再次使用;
  • 自动内存管理器(当前)具有有限的可用性。

执行内存自动回收的方法有很多,回收技术中讨论了其中几种。 大多数现代语言主要使用自动内存管理: BASIC,Dylan,Erlang,Haskell,Java, JavaScript,Lisp,ML,Modula-3, Perl,PostScript,Prolog,Python, Scheme,Smalltalk等。

在这里插入图片描述

Python

Python在多种虚拟机上运行着几种实现:原始的“ CPython”实现在其自己的虚拟机上运行;IronPython在公共语言运行时上运行;Java虚拟机上的Jython。

CPython通过混合使用引用计数和不移动的 标记清除 垃圾收集来管理内存。引用计数可确保在对象的引用计数降至零时迅速删除对象,而垃圾回收器则回收循环数据结构。

__del__弱引用(通过 weakref模块)。

Python中的垃圾回收是以引用计数为主,分代收集为辅。引用计数的缺陷是循环引用的问题。

在Python中,如果一个对象的引用数为0,Python虚拟机就会回收这个对象的内存。

  1. Memory Management Reference
  2. FOOFISH-PYTHON之禅—Python中的垃圾回收机制
  3. gc—垃圾收集器接口
  4. Python垃圾回收机制详解
  5. Python 垃圾回收机制
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 内存管理通常分为三个区域
  • 自动内存管理
  • Python
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档