Python的回收机制

本文引用自霍格沃兹测试开发学社录播课

经典面试题-Python的垃圾回收机制

霍格沃兹测试开发学社
http://ceshiren.com

问题

面试官可能会问:请介绍一下Python的垃圾回收机制?

考察点分析

面试官主要的目的是想要了解:

  • 编程语言中的垃圾回收的概念
  • python垃圾回收机制的原理

技术点

这个问题涉及到的技术知识为:

  • 内存管理与垃圾的定义
  • 垃圾回收的实现

Python内存管理

Python 的内存分配和释放方法是自动的,使用了两种内存分配策略:

  • 引用统计
  • 垃圾回收

引用统计

  • 交互界面
python3
>>> import sys
>>> a = "hogwarts"
>>> sys.getrefcount(a)
2

垃圾回收

  • 交互界面
python3
>>> import gc
>>> gc.get_threshold()
(700, 10, 10)
>>> gc.get_count()
(580, 9, 0)
>>> gc.collect()
0
>>> gc.get_count()
(18, 0, 0)

总结

请介绍一下Python的垃圾回收机制?

  • Python使用了两种内存分配策略:一种是引用统计,另一种是垃圾回收。
  • 引用统计策略是当指向一个对象的引用统计为0,那么对象称之为内存垃圾,所占的内存被立即释放。
  • 垃圾回收策略是通过三代垃圾收集器来跟踪内存中的所有对象。对于每一代,如果对象的数量超过对应的阈值,垃圾收集器将触发回收过程。: