Python-垃圾回收

# 相关地址 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))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值