Python的一些语言特性与机制

代码高效、程序健壮

值的类型,引用类型

内存共享机制

垃圾回收机制

以引用计数为主,分代收集为辅

每个对象都有指向该对象的引用总数

1
sys.getrefcount()

满足特定条件,自动启动垃圾回收

Python运行时,会记录分配对象与取消分配对象的次数。当两者差值高过阈值时。

1
2
# 查看阈值
gc.get_threshold()

所有新建对象都是0代对象。所有对象分为0,1,2代。当某一代对象经历过垃圾回收,依然存活,则被归入下一代

若一个对象的引用数为0,Python虚拟机就会回收这个对象的内存

引用计数的缺陷是循环引用的问题

递归运行时报错“RecursionError”。这是python默认的递归深度是很有限的(默认是1000),因此当递归深度超过999的样子,就会引发这样的一个异常。

解决方法:首先考虑对代码进行优化,其次也可以考虑将递归深度的数值调大一些。

1
2
import sys
sys.setrecursionlimit(100000) #你想设置的递归深度(可为任意值)
Donate
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2019-2021 子夜
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信