1
Amy 原创整理|资料核验:2026-10-31
Python官方文档说明,弱引用本身不足以让对象继续存活。当对象只剩弱引用时,垃圾回收机制可以回收它;WeakValueDictionary 中对应条目也会随值被回收而删除。
这适合“不希望仅仅因为进入缓存,就一直占着对象”的场景,但不适合把缓存当成对象一定存在的唯一保证。并非所有对象类型都直接支持弱引用,普通list和dict就是需要特别留意的例子。
Amy的读取建议:对弱引用r,先做obj = r(),再判断obj是否为None;若不为None,就使用保存到obj里的对象。不要先用r()检查存活,稍后又调用r()取值,分开的两次操作在并发环境下可能遇到对象已被回收的变化。
这里是对象生命周期的教学说明,不承诺改成弱引用就一定降低程序内存;仍需检查其他地方是否保留了强引用,并结合实际负载测量。