gpt4 book ai didi

python - 即使没有非弱引用指向对象,weakref 也不能评估为 None 吗?

转载 作者:太空宇宙 更新时间:2023-11-04 01:35:54 30 4
gpt4 key购买 nike

据我了解,Python 3 不保证何时释放对象的内存,除非至少有一个非弱引用指向对象时才释放内存。

语言是否对弱引用做出任何其他保证?特别是,假设我创建了一个指向某个对象的 weakref wr。假设在稍后的某个时间,对该对象的所有非弱引用都已被销毁。是否保证当时 wr 的计算结果为 None,或者它可能仍然会在一段时间内计算为原始对象?

除了语言保证之外,围绕 weakref 是否有任何有趣的实现行为?

最佳答案

弱引用对象只有在 GC 启动后才会被销毁。由于这是不确定的,因此不能保证在所有强引用被删除后它就会被销毁。

来自docs :

...when the only remaining references to a referent are weak references, garbage collection is free to destroy the referent and reuse its memory for something else.

关键词是“自由摧毁所指对象”——它可能不会立即发生。

关于python - 即使没有非弱引用指向对象,weakref 也不能评估为 None 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9796492/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com