含泪整理一下Python垃圾回收机制相关资料

简介: 含泪整理一下Python垃圾回收机制相关资料

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

image.png

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

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

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

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

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

自动内存管理

自动内存管理的优点是:

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

自动内存管理的缺点是:

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

执行内存自动回收的方法有很多,回收技术中讨论了其中几种。

大多数现代语言主要使用自动内存管理: BASIC,Dylan,Erlang,Haskell,Java,  JavaScript,Lisp,ML,Modula-3, Perl,PostScript,Prolog,Python,  Scheme,Smalltalk等。

image.png

Python中的垃圾回收

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

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

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

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

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

     

相关文章
|
1月前
|
人工智能 Java 机器人
【python】python的垃圾回收机制(详细讲解)
【python】python的垃圾回收机制(详细讲解)
|
2月前
|
算法 Java Python
请简述Python中的垃圾回收机制。
请简述Python中的垃圾回收机制。
14 0
|
2月前
|
Java Python
当引用计数器为0时,Python是如何确定哪些对象需要被回收的?
【2月更文挑战第19天】【2月更文挑战第56篇】当引用计数器为0时,Python是如何确定哪些对象需要被回收的?
|
4月前
|
算法 Java Python
|
5月前
|
算法 Java 程序员
Python 基础知识: 解释 Python 的垃圾回收机制是如何工作的?
Python 基础知识: 解释 Python 的垃圾回收机制是如何工作的?
|
4月前
|
算法 Java 程序员
|
2天前
|
算法 Java C++
python垃圾回收机制详解
python垃圾回收机制详解
6 0
|
2月前
|
算法 Java 开发者
详解python中的垃圾回收机制
详解python中的垃圾回收机制
44 0
|
2月前
|
Java 程序员 Python
|
3月前
|
数据采集 大数据 Python
学Python静不下来,看了一堆资料还是很迷茫是为什么
学Python静不下来,看了一堆资料还是很迷茫是为什么
31 2
学Python静不下来,看了一堆资料还是很迷茫是为什么