-
>>> a=[1,2]
-
>>> b=[3,4]
-
>>> c=a
-
>>> a.append(b)
-
>>> b.append(a)

文章插图
- ref_count表示引用计数
- 对象a,b,c全部为reachable
执行del之后,引用关系如下图所示:
-
>>> dela
-
>>> delb

文章插图
- a,b,c的ref_count减1
执行gc扫描标记: a引用b,将b的refcount减1到0,b引用a,将a的refcount减1到1,将b放在unreachable下 。

文章插图
再循环:因为a是可达的,所以会递归地将从a节点出发可以达到的所有节点标记为reachable下,即为:
清除:unreachable下没有可清除的对象,因此a,b,c对象不会被清除
总结总体而言,Python通过内存池来减少内存碎片化,提高执行效率 。主要通过引用计数来完成垃圾回收,通过标记-清除解决容器对象循环引用造成的问题,通过分代回收提高垃圾回收的效率 。
【什么是“内存管理机制”?】
推荐阅读
- 《王者荣耀》连胜封号规则是怎样的?
- Linux 原来是这么管理内存的
- 中国十大名茶最新排名是怎样的?
- 中国第一个乒乓球大满贯是谁?
- 数据分析-pandas库快速了解
- VMware环境部署vFW虚拟防火墙
- 柯尔鸭子的智商有多高 柯尔鸭为什么能当宠物
- CDN的本质只是加速器?其实它才是互联网的核心精神的集大成者
- 云南大蟒蛇事件 云南挖出大蛇是真的吗
- 南极冰盖储存的水资源在地球淡水资源的 南极冰盖储存的水资源是
