Grace's Dev Site
write关于我
闭坑指南 · Python#内存

内存:引用、循环引用与 gc

Python 有 GC,但不代表可以无限造对象;循环引用与泄漏仍会发生。

内存:引用、循环引用与 gc

引用计数

对象没有引用时立即释放。sys.getrefcount 可看引用次数(仅调试)。

循环引用

两个对象互相引用时,仅靠引用计数无法回收;gc 模块会周期扫描。纯 Python 循环引用通常能收回,但:

  • 对象有 __del__ 时可能延迟或进 gc.garbage
  • 全局列表/缓存一直持有引用 → 真泄漏

大列表 / 大字符串

  • 切片会复制(对不可变对象是新建)
  • 生成器比一次性 list(...) 省内存
  • 处理大文件用逐行读,不要 read() 整个进内存

与 C 的区别

Python 程序员也要关心内存,只是表现形式是 RSS 上涨、OOM、缓存爆满,而不是手动 free。

在线运行 Python

Pyodide