我有一个保存在文件中的字典。我从Python交互式shell中将字典加载到内存中,我的系统监视器显示Python进程消耗了4GB内存。 以下命令给出以下输出:
size1 = sys.getsizeof(mydict)/(1024**2)
print size1
96
size2 = 0
for i in mydict.keys():
size2 += sys.getsizeof(i)
print size2/(1024**2)
37
size3 = 0
for i in mydict.keys():
size3 += sys.getsizeof(mydict[i])
print size3/(1024**2)
981
size4 = 0
for i in mydict.keys():
for j in mydict[i]:
size4 += j
print size4/(1024**2)
2302
print str(size1 + size2 + size3 + size4)
3416
现在如果我删除这个词典
del(mydict)
gc.collect()
释放的内存不到400MB。即使我从字典中的列表中逐一删除所有项目,释放的内存也不超过450-500MB。因此,尽管我的shell中没有变量,但仍然消耗了3.5GB的内存。有人能解释这是怎么回事吗?
mydict = None
,会发生什么? - CodeManX