我有一个 python 脚本正在慢慢消耗我的所有内存 (48GB)。如果我记得的话,python 会执行垃圾收集,所以我不需要自己清理?
例如:
class data_store:
dat1={}
dat2={}
dat3={}
class myclass ():
def mem_func(self):
self.x = data_store()
self.x.dat1 = (lots of data)
self.x.dat2 = (lots of data)
y = x.dat1 + 1
...
我的大部分数据在写入文件之前都暂时存储在 data_store() 中。我认为这将是泄漏的根源。每次调用 mem_func() 时,都会创建一个新的 data_store() 对象并将其分配给 self.x。我假设旧的 data_store() 对象现在将成为 GC 删除的候选对象。另外,我假设 y 也可以在 mem_func 完成后被删除。
我能想到的唯一一件事是我正在使用 matplotlib 创建图形并将它们保存到文件中。这一切都是在一个函数中完成的,但也许我需要正确删除该数字。另外,我有一个一直打开的 sqlite 数据库,我在其中写入数据,但数据并不多。图像要大得多。
您需要记住,GC 仅收集没有指针(变量)指向它的数据。换句话说,只要可以通过变量访问内存,就不会收集/释放它。
因此,您需要将 None
分配给您不再需要的变量,或者将新数据分配给相同的变量名称(如果您不再需要它们)。
我是一名优秀的程序员,十分优秀!