Python 中的内存管理机制主要有三种,一是引用计数、二是垃圾回收、三是内存池。这三种机制相辅相成完成了程序在运行过程中的内存管理。
引用计数:简单来说,引用计数就是一种内存管理的方式、并且具有较高的效率,所谓引用计数就是对象在被引用的时候进行计数操作,当被引用时计数结果加1、不被引用时减1,这样的计数方式说明当计数的结果为0时对象没有被使用。因此,计数结果为0可以执行对象的删除操作以便节约内存。循环引用无法回收,即一个对象在自身的属性中又引用了自身的对象这种情况便会无法回收,因为引用计数永远不能等于零。
垃圾回收:引用计数也是包含在垃圾回收机制的范畴里面,除此之外,还有两种垃圾回收机制分别是分代回收、标记清除。
python 提供了 gc 的扩展库作为垃圾回收机制的使用,并且可以解决在引用计数中的循环引用无法回收的问题。一般情况下,想要主动回收垃圾只需要导入 gc 扩展库、并且调用垃圾收集函数即可完成垃圾回收。
手动触发垃圾回收,在合适的地方进行回收
1# 导入 gc 模块
2import gc
3# 在需要收集垃圾的地方调用垃圾回收
4gc.collect()
开启、关闭、检测垃圾回收机制
1# 导入 gc 模块
2import gc
3# 开启垃圾回收机制
4gc.enable()
5# 关闭垃圾回收机制
6gc.disable()
7# 检测垃圾回收机制是否开启
8gc.isenabled()
获取、设置自动回收的阈值
1# 导入 gc 模块
2import gc
3# 获取自动回收垃圾对象的阈值
4gc.get_threshold()
5# 设置自动回收垃圾对象的阈值
6gc.set_threshold(1000, 15, 5)
联系客服