我有一个字典保存在一个文件中。我从python交互式shell将字典加载到内存中,我的系统监视器说python进程消耗4GB。 下面的命令得到以下输出:Python内存管理 - 字典
size1 = sys.getsizeof(mydict)/(1024**2)
print size1
size2 = 0
for i in mydict.keys():
size2 += sys.getsizeof(i)
print size2/(1024**2)
size3 = 0
for i in mydict.keys():
size3 += sys.getsizeof(mydict[i])
print size3/(1024**2)
size4 = 0
for i in mydict.keys():
for j in mydict[i]:
size4 += j
print size4/(1024**2)
现在
print str(size1 + size2 + size3 + size4)
如果我删除字典
del(mydict)
gc.collect()
小于400MB从内存释放。 即使我从字典里面的列表中首先删除所有的项目,释放的内存不会超过450-500 MB ..所以我最终没有变量在我的shell中,但仍然消耗了3,5GB ..任何人都可以解释发生了什么?
如果在删除前设置了'mydict = None',会发生什么? – CoDEmanX
相同的东西.. 400MB释放 – tk66
字典的内容是什么?由于python处理小数字或相同对象的方式,您可能会在计算大小时重复计算。 – ebarr