Python gc
Python gc
Python gc 模块提供垃圾回收器的接口
关于 Python 垃圾回收 <- 点击查看
官方文档:https://docs.python.org/3/library/gc.html?highlight=gc
enable & disable
enable() -- 开启自动垃圾回收
disable() -- 关闭自动垃圾回收
isenabled() -- 查看是否开启自动垃圾回收
collect
collect() -- 立刻进行全部垃圾回收
可以传入 int 指定对前几代链表进行垃圾回收 (只能为 0、1、2,否则会报错)
返回 unreachable 对象数量
get_count
get_count() -- 返回垃圾回收计数器,表示每层链表计数分别是多少
get_stats
get_stats() -- 返回一个包含每代链表状态的字典
{'collections': 链表被回收次数, 'collected': 被回收对象个数, 'uncollectable': 无法回收的对象数}
debug
set_debug() -- 设置垃圾回收器的调试标识位,调试信息会被写入 sys.stderr
get_debug() -- 获取垃圾回收器的调试标识位
传入的整数会被转换成二进制,对应的位开启对应的调试:
1: DEBUG_STATS - 在回收完成后打印统计信息。当回收频率设置较高时,这些信息会比较有用
2: DEBUG_COLLECTABLE - 当发现可回收对象时打印信息
4: DEBUG_UNCOLLECTABLE - 打印找到的不可回收对象的信息(指不能被回收器回收的不可达对象)。这些对象会被添加到 garbage 列表中
8: DEBUG_SAVEALL - 设置后,所有回收器找到的不可达对象会被添加进 garbage 而不是直接被释放。这在调试一个内存泄漏的程序时会很有用
16: DEBUG_LEAK - 调试内存泄漏的程序时,使回收器打印信息的调试标识位 (等价于除了 DEBUG_STATS 外的其他 3 个)
threshold
set_threshold(threshold0[, threshold1[, threshold2]]) -- 设置自动执行垃圾回收的阈值
get_threshold() -- 获取自动执行垃圾回收的阈值
当回收阈值为 0 时,会禁用回收
当分配对象的数量减去释放对象的数量大于阈值 threshold0 时,对第零代启动垃圾回收
当上一次第一代回收之后,第零代的回收次数大于阈值 threshold1 时,对第一代进行垃圾回收
当上一次第二代回收之后,第一代的回收次数大于阈值 threshold2 时,对第二代进行垃圾回收
track
get_objects(generation=None) -- 返回一个被收集器追踪的对象列表
is_tracked() -- 该对象是否被追踪,一般原子类的实例不会被追踪,而非原子类(如容器、用户自定义的对象)会被追踪
示例:
import gc
print(gc.is_tracked(0))
print(gc.is_tracked('a'))
print(gc.is_tracked(list()))
print(gc.is_tracked(dict()))
print(gc.is_tracked({'a': 1}))
print(gc.is_tracked({'a': []}))
输出结果:
False
False
True
False
False
True
refer
get_referrers() -- 返回一个包含直接引用该对象的对象的列表,只有支持垃圾回收的容器 (已经解除占用,但在循环引用中并未被回收的对象仍然会出现,可以先 collect())
get_referents() -- 返回一个包含该对象引用对象的列表
freeze
freeze() -- 冻结所有追踪的对象,移至永久代并忽略以后的回收
unfreeze() -- 解冻所有对象,并将它们放到年老代中
get_freeze_count() -- 返回永久代中对象数量
Python gc的更多相关文章
- 禁用 Python GC,Instagram 性能提升10%
通过关闭 Python 垃圾收集(GC)机制,该机制通过收集和释放未使用的数据来回收内存,Instagram 的运行效率提高了 10 %.是的,你没听错!通过禁用 GC,我们可以减少内存占用并提高 C ...
- python GC、分支、循环
内存管理 1.变量无须事先声明,也不需要指定类型 2.python编程中一般无须关心变量的存亡,一般也不用关心内存的管理 3.python使用引用计数记录所有对象的引用计数 当对象引用数变为0,他就可 ...
- 【转】如何拿到半数面试公司Offer——我的Python求职之路
原文地址 从八月底开始找工作,短短的一星期多一些,面试了9家公司,拿到5份Offer,可能是因为我所面试的公司都是些创业性的公司吧,不过还是感触良多,因为学习Python的时间还很短,没想到还算比较容 ...
- 如何拿到半数面试公司Offer——我的Python求职之路
从八月底开始找工作,短短的一星期多一些,面试了9家公司,拿到5份Offer,可能是因为我所面试的公司都是些创业性的公司吧,不过还是感触良多,因为学习Python的时间还很短,没想到还算比较容易的找到了 ...
- python面试大全
问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...
- python面试2
Python语言特性 1 Python的函数参数传递 看两个例子: 1 2 3 4 5 a = 1 def fun(a): a = 2 fun(a) print a # 1 1 2 ...
- python求职之路
自我介绍 这是一道送分题,万年不变的第一个问题.不过有些小伙伴可能没有太在意,其实这个问题已经在面试官心中决定了你的去留意向.自我介绍的主要结构:个人基本信息 + 基本技术构成 + 项目经验(具体项目 ...
- 如何拿到半数面试公司Offer——我的Python求职之路(转)
原文出处:http://www.cnblogs.com/Lands-ljk/p/5836492.html 从八月底开始找工作,短短的一星期多一些,面试了9家公司,拿到5份Offer,可能是因为我所面试 ...
- python公司面试题集锦 python面试题大全
问题一:以下的代码的输出将是什么? 说出你的答案并解释. class Parent(object): x = 1 class Child1(Parent): pass class Child2(Par ...
随机推荐
- 数据结构学习--单循环链表(python)
概念 将单链表的终端节点的指针由原来的空指针改为指向头节点, 就是整个单链表形成一个环, 这种首尾相接的单链表称为单循环链表. 实现 class Node: """ 节点 ...
- axios解决跨域问题(vue-cli3.0)
一.什么是跨域 1.跨域 指的是浏览器不能执行其他网站的脚本.它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制. 2.同源策略 是指协议,域名,端口都要相同,其中有一个不同都 ...
- 通过传XML格式导入到ORACLE的销售订单
procedure IMPORT_OM(p_unid varchar2, --流程ID p_CUSTOMER_PO varchar2, --合同编号 p_xmlstr varchar2, --clob ...
- Appium从入门到实战合集
从今天起,持续更新 想要及时获得更新,请关注微信公众号 教程下载 1.连载01-Appium自我介绍和环境搭建 2.连载02-Appium启动参数配置 3.连载03-Appium入门案例 4.连载04 ...
- maven与gradle的阿里云仓库配置
直接参考 https://help.aliyun.com/document_detail/102512.html 就好. 阿里云maven仓库官网 https://maven.aliyun.com/m ...
- 关于input标签不同type下的盒模型
刚才发现,在Chrome下input标签的不同type类型所取的盒模型是不一样的.浪费了我很多时间去调试,唉. type="text"时,给它设置宽度width:300px,此时的 ...
- Python关于去除字符串中空格的方法
Python关于去除字符串中空格的方法 在编写程序时我们经常会遇到需要将字符串中的空格去掉的情况,通常我们可以使用下面几种解决方法: 1.strip()方法:该方法只能把字符串头和尾的空格去掉,但是不 ...
- 为什么 Go 标准库中有些函数只有签名,没有函数体?
如果你看过 Go 语言标准库,应该有见到过,有一些函数只有签名,没有函数体.你有没有感觉到很奇怪?这到底是怎么回事?我们自己可以这么做吗?本文就来解密它. 首先,函数肯定得有实现,没有函数体,一定是在 ...
- Maven学习 --- <distributionManagement>
在使用maven过程中,我们在开发阶段经常性的会有很多公共库处于不稳定状态,随时需要修改并发布,可能一天就要发布一次,遇到bug时,甚至一天要发布N次.我们知道,maven的依赖管理是基于版本管理的, ...
- 史诗级最强教科书式“NIO与Netty编程”
史诗级最强教科书式“NIO与Netty编程” 1.1 概述 1.2 文件IO 1.2.1 概述和核心API 1.2.2 案例 1.3 网络IO 1.3.1 概述和核心API 3.4 AIO编程 3.5 ...