Python回收机制GC

Python回收机制GC
现在的高级语言,如java,c#等都采用了垃圾收集机制,而不再是c,c++里用户自己管理维护内存的方式,自由管理内存极其自由,可以任意申请内存,但如同一把双刃剑,为大量内存泄漏,悬空指针等bug埋下隐患。对于一个字符串,数组,列表,类甚至数值都是对象的语言,自然不会去让用户处理如何分配回收内存的问题。Python里和java一样采用了垃圾收集机制,不过不一样的是:Python采用的是引用计数机制为主标记-清除分代收集两种机制为辅的策略。
当一个对象有新的引用时,它的引用计数就会增加,当引用它的对象删除时,它的引用计数就会减少。
引用计数机制的优点:
简单
实时性:一旦没有引用,内存就直接释放。不用像其他机制等到特定时机。还有一个好处就是:处理回收内存的时间分摊到平时。

引用计数机制的缺点
维护引用计数消耗资源
循环引用

list1 = []
list2 = []
list.append(list2)
list.append(list1)

list1和list2相互引用,如果不存在其他对象对他们的引用,list1和list2的引用计数任然为1,所占用的内存永远无法被回收,这个缺点,注定python还将引入新的回收机制。

猜你喜欢

转载自blog.csdn.net/weixin_43670105/article/details/88388295