什么是“内存管理机制”?( 三 )

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

什么是“内存管理机制”?

文章插图
  • ref_count表示引用计数
  • 对象a,b,c全部为reachable
 
执行del之后,引用关系如下图所示: 
  1. >>> dela
  2. >>> 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通过内存池来减少内存碎片化,提高执行效率 。主要通过引用计数来完成垃圾回收,通过标记-清除解决容器对象循环引用造成的问题,通过分代回收提高垃圾回收的效率 。

【什么是“内存管理机制”?】


推荐阅读