Windows环境下Python内存限制测试

Windows环境下Python内存限制测试,python,memory-consumption,Python,Memory Consumption,我试图探索Python的32位内存限制。所以我写了这个小程序 a=[] while 1: a.append(chr(65)) 并查看Windows任务管理器中python.exe的内存消耗情况。 首先,我很惊讶它偶尔会减少(有时几乎减半)。第二,数据量仅上升到500MB左右(我相信在另一台64位机器上,数据量会无限上升) 这台计算机有4GB内存,windows boot>3GB可能处于活动状态,我用imagecfg.exe-l修补了python.exe。没有其他相关进程正在运行,总内存

我试图探索Python的32位内存限制。所以我写了这个小程序

a=[]
while 1:
    a.append(chr(65))
并查看Windows任务管理器中python.exe的内存消耗情况。 首先,我很惊讶它偶尔会减少(有时几乎减半)。第二,数据量仅上升到500MB左右(我相信在另一台64位机器上,数据量会无限上升)

这台计算机有4GB内存,windows boot>3GB可能处于活动状态,我用
imagecfg.exe-l
修补了python.exe。没有其他相关进程正在运行,总内存不超过40%。我相信同样的程序在另一台计算机上也能工作


有什么建议我可以检查我的python现在是否可以达到3GB吗?

内存可能增长缓慢,因为python缓存了一些字符串,因此每个
a.append
实际上只消耗1个字的新内存。此外,不会对每个
追加
进行分配,但如果列表已满,则其大小将增加x倍。无论如何,这仍然不能解释为什么你的内存不会用完。您让程序运行多长时间?你试过检查
a
的长度增加了吗?事实上我确实运行了内存,但是上面的版本是500MB(而且相当快)。现在我尝试了一个新的程序,在其中我在dict中分配空类。这个新程序的运行速度大约为1600MB(甚至更快)。我预计2000MB的内存会用完,或者如果我的修补程序的内存是3000MB:(尝试分配唯一的字符串,python可能一直引用同一个对象。sys.getrefcount可能会有帮助:)但是您确定内存会用完,或者程序只是在500MB的内存下崩溃吗?可能引用计数将为0或负值,这会导致程序崩溃。我所能确定的是,我得到了一个MemoryError异常:)当我使用
chr(65)
时,我希望每次都会创建新对象,并且内存确实会增加。