在 Python 中:
强引用(Strong Reference)
- 定义:对象被变量直接引用时,就是强引用。
- 特点:只要有强引用存在,对象就不会被垃圾回收。
- 示例:
a = [1, 2, 3] # a 是对列表对象的强引用 b = a # b 也是强引用
弱引用(Weak Reference)
- 定义:弱引用不会增加对象的引用计数,对象可以被垃圾回收。
- 用途:常用于缓存、观察者模式等场景,避免内存泄漏。
- 实现:通过
weakref
标准库实现。 - 示例:
import weakref class MyClass: pass obj = MyClass() w = weakref.ref(obj) # 创建对 obj 的弱引用 print(w()) # 输出 <__main__.MyClass object at ...> del obj print(w()) # 输出 None(对象已被回收)
总结
- 强引用:对象只要有强引用就不会被回收。
- 弱引用:对象没有强引用时会被回收,弱引用不会阻止回收。