python的垃圾回收机制

Python使用自动垃圾回收(Garbage Collection)机制来管理内存并自动释放不再使用的对象。下面是Python的垃圾回收机制的基本原理:

引用计数(Reference Counting):

  1. Python中的垃圾回收机制主要基于引用计数。每个对象都有一个引用计数,用于记录有多少个引用指向该对象。
    当引用计数为0时,表示该对象不再被使用,可以被回收。 循环引用:
  2. 如果存在循环引用(即对象之间形成一个循环的引用链),引用计数无法正常工作,导致内存泄漏。
    为了解决循环引用的问题,Python使用了其他的垃圾回收机制。 标记-清除(Mark and Sweep):
  3. Python中的垃圾回收机制通过标记-清除算法来处理循环引用的情况。
    垃圾回收器会定期启动,并从一组根对象开始,遍历整个对象图,并标记所有可访问的对象。
    之后,回收器会清除未被标记的对象,并回收它们占用的内存空间。 分代回收:
  4. 为了进一步提高垃圾回收的效率,Python使用了分代回收(Generational Garbage Collection)机制。
    对象被分为不同的代(Generation),根据其存活时间进行分类。一般来说,新创建的对象放在第0代,经过一次或多次垃圾回收仍然存活的对象会被提升到更高的代中。

垃圾回收器会更频繁地检查低代中的对象,而对高代中的对象进行较少的检查,以提高垃圾回收的效率。
需要注意的是,Python的垃圾回收机制是自动进行的,开发者不需要手动管理内存。垃圾回收器会根据需要定期启动,并在合适的时机回收不再使用的对象。这样,开发者可以专注于编写代码,而无需过多关注内存管理的细节。

python 中的字典

dic = {“a”:11,“b”:22}
data = dic.items()
print(data)

for k,v in data:
print(k,v)

遍历字典的时候 不允许修改和添加删除字典里面的内容 ,因为 遍历的是字典的引用地址 在修改后会引起重新遍历 导致遍历的次数有问题

拷贝

python中 浅拷贝 拷贝的是引用地址

深拷贝是拷贝的 复制一份 有新的引用地址 等于是复制了

li = [1,2]
lis = [1,2,li]
lis1 = lis.copy()
lis2 = copy.deepcopy(lis)

li.append(3)
print(lis1) # 改變了
print(lis2) # 未改變

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端朱先生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值