很抱歉,标题标题含糊不清,但标题要冗长。如果有人可以改写更好,请这样做。
我有一个有关如何收集对象的基于参考的问题。如果我记得,当没有更多引用时,对象将被垃圾回收。考虑到这一点,如果我所拥有的只是一个对象的数据成员的引用,该对象将被删除吗?
这是我正在使用的类的一个简单示例(我的类更大,功能更多,这就是为什么我要在其内部创建一个类实例来处理逻辑)
class A:
def __init__(self):
self.my_list = []
def read_list_from_new_source(self):
new_instance = A()
for i in range(10):
new_instance.add(i)
self.my_list = new_instance.my_list
def add(self, element):
"""
Just adding an element to the list attribute of the class
"""
self.my_list.append(element)
我的问题是,new_instance
方法完成后会read_list_from_new_source
被垃圾回收吗?还是因为self.my_list
现在拥有对其属性之一的引用而将其保留在内存中?
我知道list
不会删除new_instance.my_list
引用,但是我担心整个类实例将保留在内存中。
我的想法是,由于对象本身不再具有引用,因此将删除该对象,仅保留list
,但是我不知道我可以通过哪种方法来验证该理论以确保我没有内存泄漏。