# 相关地址 https://www.jianshu.com/p/1e375fb40506
# https://www.cnblogs.com/xiugeng/p/10514101.html#_label0_0
# https://blog.csdn.net/xiongchengluo1129/article/details/80462651
# 在python 中使用的引用计数清除为主 标记/分代为附
# 每一个外部对象增加对当前对象的引用时 该对象的引用计数器+1
# 这样的处理方式效率搞
# 但是中间有会出现循环依赖的问题
# 为了解决循环依赖的问题 python中 引入了 标记清除和分代收集 来解决这一问题?
def extend_list(val, l=[]):
l.append(val)
return l
list1 = extend_list(10)
list2 = extend_list(123, [])
list3 = extend_list("a")
print(list1)
print(list2)
print(list3)
# [10, 'a']
# [123]
# [10, 'a']
# 通过运行以上代码得出的结果 list1 与list3 相同
# 因为在同一静态文件中 同一方法形参上默认初始化的对象的次数只会一次 即下次调用该方法时该形参初始化参数不会再进行创建 继续沿用最初创建的对象
import sys
#引用之间的查询
# 引用计数+1
l=[]
# 引用计数+1
l1=l
# 引用计数+1
l2=l
# 引用计数+1
l3=l
# 因为是对象引用赋值 同等于 l5=l +1
l5=l1
# 删除l2变量 也等于删除了对[] 的引用 -1
del l2
# 调用print方法 获取l 引用 会临时获得一次引用 这里+1
print(sys.getrefcount(l))
Python-垃圾回收
最新推荐文章于 2022-01-10 11:00:24 发布