正在回答 回答被采纳积分+1
1回答
慕之熠_灿烈
2019-06-20 14:03:05
同学,您好。
分代回收是一种建立在标记清除技术之上、以空间换时间的垃圾收集方式,Python将内存根据对象的存活时间划分为不同的集合,每个集合称为一个代,Python将内存分为了3“代”,分别为年轻代(第0代)、中年代(第1代)、老年代(第2代),分别对应着3个链表,它们的垃圾收集频率与对象的存活时间的增大而减小。新创建的对象都会分配在年轻代,年轻代链表的总数达到上限时,Python垃圾收集机制就会被触发,把那些可以被回收的对象回收掉,而那些不会回收的对象就会被移到中年代去,依此类推,老年代中的对象是存活时间最久的对象,甚至是存活于整个系统的生命周期内。本例中的变量a,b最终也都会被加以回收。
程序中a和b之间虽然是相互调用的关系,但是外部再无其他的引用关系,且由于这两者的相互调用造成了各自所占用的内存空间无法释放(因为其引用计数不为0),所以要进行垃圾回收。
当引用计数和标记清除两大机制仍然无法对其进行垃圾回收的对象,Python将自动触发分代回收机制以释放对应的内存空间。
如果我的回答解决了你的疑惑,请采纳,祝学习愉快~~~
1.Python零基础入门
- 参与学习 人
- 提交作业 2727 份
- 解答问题 8160 个
想要进入Python Web、爬虫、人工智能等高薪领域,你需要掌握本阶段的Python基础知识,课程安排带你高效学习轻松入门,学完你也能听得懂Python工程师的行业梗。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星