删除对对象的引用,但如果在其他位置引用,则将对象保留在内存中

鲁尔巴卡(Roulbacha)

我面临的问题是:函数接收其对象的引用,并在例程执行过程中的某个时刻对这些引用调用del。

这些引用引用的对象有时在其他地方引用,而有时没有引用。

我希望del语句仅删除函数中存在的引用。如果该对象未在程序的其他地方引用,则可以对其进行垃圾回收。如果我是正确的,则del直接调用对象的析构函数,而不是简单地删除其引用。我如何获得所需的行为?

血红素

如果我是正确的,则del直接调用对象的析构函数,而不是简单地删除其引用。

假设使用CPython,这是不正确的。

del 将对象的引用计数减少1。当引用计数达到0时,将对对象进行垃圾回收。

如果通过析构函数表示__del__魔术方法,请注意,通常在对象被垃圾回收时del调用,而不是在调用调用。而且,不能保证该方法甚至会被调用

只是要注意,还有一个(可选)gc接口可以中断对象引用周期。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

未引用的对象是否有可能保留在内存中并调用目标操作?

使用SailsJS / Express在请求之间将对象保留在内存中

是否可以将对象保留在内存中以实现比Redis或Memcached更快的缓存存储?

在Python Falcon的api调用之间将对象保留在内存中

jQuery Mobile对象保留在内存中

Constexpr替代new放置,以便能够将对象保留在内存中而未初始化?

我可以将对象保留在内存中直到应用程序退出吗?

错误:如果删除了文件,列表将保留在内存中;如果删除了文件,则将数据保存两次

如果我将InputStream的对象保留在内存中,那是否意味着我要将整个文件存储在内存中?

对象保留引用的轨迹,但不保留在对象中

将对对象的引用存储在ArrayList中

Android是否将视图对象层次结构保留在内存中?

为什么用send_data发送的对象似乎保留在内存中?

使用JNI从Java调用之间将本机对象保留在内存中

如何从master分支中删除git commit但将其保留在其他分支中?

ViewController保留在内存中

NSMutableArray将对象保留在indexSet

如果在其他印刷声明中

在其他文件中提供对对象的引用导致未捕获“ ...”(Node MCU)

如何存储对在其他线程中设置的对象的引用?

如何在其他函数中引用类对象?

如何在其他函数中引用对象?

Excel VBA通过使用通用变量“设置”对其他工作簿的引用,将该引用保留在公式中

如果在其他两个类中不存在新对象,如何在Python Django中创建一个新对象?

将对象保留在具有最高值的数组中,但删除所有具有重复值的对象

伴随对象是否在应用程序的生命周期中保留在内存中

SQLAlchemy:对象列表,如果删除则保留引用

如果在引用上调用,wait()是否等待引用的对象或引用本身?

如何删除在python中引用的对象的内存位置?