Python垃圾回收机制

简介: Python垃圾回收机制

Python采用的是引用计数机制为主,隔代回收机制为辅的策略

在Python中,每个对象都有指向该对象的引用总数---引用计数
查看对象的引用计数:sys.getrefcount() get reference count

注意:
当使用某个引用作为参数,传递给getrefcount()时,参数实际上创建了一个临时的引用。因此,
getrefcount()所得到的结果,会比期望的多1。

1、引用计数增加
a、对象被创建b、另外变量也指向当前对象
b、另外变量也指向当前对象
c、作为容器对象的一个元素
d、作为参数提供给函数:test(x)

2、引用计数减少
a、变量被显式的销毁
b、对象的另外一个变量重新赋值
c、从容器中移除
d、函数被执行完毕

当Python的某个对象的引用计数降为0时,说明没有任何引用指向该对象,该对象就成为要被回收的垃圾。比如某个新建对象,被分配给某个引用,对象的引用计数变为1。如 为0,那么该对象就可以被垃圾回收。

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

python垃圾回收链表阈值
年轻代:700
中年代:10
老年代:10

Python中GC模块常用函数
gc.get_count():获取当前自动执行垃圾回收的计数器,返回一个长度为3的列表
gc.get_threshold(): 获取gc模块中自动执行垃圾回收的频率
gc.set_threshold(threshold0[,threshold1,threshold2]):设置自动执行垃圾回收的频率
gc.disable():python3默认开启gc机制,可以使用该方法手动关闭gc机制
gc.disable():python3默认开启gc机制,可以使用该方法手动关闭gc机制
gc.collect():手动调用垃圾回收机制回收垃圾

相关文章
|
9月前
|
缓存 监控 算法
Python内存管理:掌握对象的生命周期与垃圾回收机制####
本文深入探讨了Python中的内存管理机制,特别是对象的生命周期和垃圾回收过程。通过理解引用计数、标记-清除及分代收集等核心概念,帮助开发者优化程序性能,避免内存泄漏。 ####
203 3
|
12月前
|
缓存 Java Python
python垃圾回收&缓存机制
python垃圾回收&缓存机制
|
12月前
|
存储 算法 Java
关于python3的一些理解(装饰器、垃圾回收、进程线程协程、全局解释器锁等)
该文章深入探讨了Python3中的多个重要概念,包括装饰器的工作原理、垃圾回收机制、进程与线程的区别及全局解释器锁(GIL)的影响等,并提供了详细的解释与示例代码。
147 0
|
存储 Java 程序员
【Python 的内存管理机制专栏】深入解析 Python 的内存管理机制:从变量到垃圾回收
【5月更文挑战第18天】Python内存管理关乎程序性能与稳定性,包括变量存储和垃圾回收。变量存储时,如`x = 10`,`x`指向内存中值的引用。垃圾回收通过引用计数自动回收无引用对象,防止内存泄漏。了解此机制可优化内存使用,避免循环引用等问题,提升程序效率和稳定性。深入学习内存管理对成为优秀Python程序员至关重要。
162 5
【Python 的内存管理机制专栏】深入解析 Python 的内存管理机制:从变量到垃圾回收
|
算法 Java 开发者
Python垃圾回收机制
Python垃圾回收机制
|
Java Python
Python进阶之旅:深入理解变量作用域、垃圾回收、拷贝机制与异常处理
Python进阶之旅:深入理解变量作用域、垃圾回收、拷贝机制与异常处理
|
监控 算法 Java
使用Python的垃圾回收机制来管理内存
使用Python的垃圾回收机制来管理内存
|
监控 Java 数据处理
Python内存管理:引用计数与垃圾回收
Python内存管理:引用计数与垃圾回收
166 0
|
算法 Java Python
Python教程:深入了解Python垃圾回收机制
在Python中,垃圾回收(Garbage Collection)是一种自动管理内存的机制,它可以自动识别和清理不再使用的对象,释放它们占用的内存空间,以提高内存利用率和程序性能。
254 3
|
监控 算法 Java
Python内存管理与垃圾回收机制
【5月更文挑战第12天】了解Python内存管理与垃圾回收对编写高效稳定程序至关重要。Python自动管理内存,使用`malloc()`和`free()`分配和释放。引用计数跟踪对象引用,当引用计数为零时对象销毁。垃圾回收处理循环引用,采用分代回收算法。优化技巧包括避免循环引用、显式释放对象、使用生成器和迭代器。理解这些机制有助于避免内存泄漏,提高性能。通过示例代码,学习如何在实践中应用内存管理最佳实践和高级优化技巧,以及如何调试和诊断内存问题。在并发和异步编程中,需注意线程安全和异步内存管理。掌握这些知识能提升Python编程的效率和质量。

热门文章

最新文章

推荐镜像

更多