GAE有各种限制,其中一个是最大可分配内存块大小为1Mb(现在是10倍以上,但这不会改变问题)。限制意味着不能在list()中放置更多的项目数量,因为CPython会尝试为元素指针分配连续的内存块。拥有巨大的list()可以被认为是不好的编程习惯,但即使程序本身没有创建巨大的结构,CPython仍然在幕后。CPython内部结构
CPython似乎在维护单个全局对象列表或其他东西。即具有许多小对象的应用程序倾向于分配越来越大的单块内存。
第一个想法是gc,禁用它会稍微改变应用程序行为,但仍然会保留一些结构。
是遇到该问题一个简单的短的应用是:
a = b = []
number_of_lists = 8000000
for i in xrange(number_of_lists):
b.append([])
b = b[0]
谁能赐教如何防止CPython的从具有许多应用对象时,巨大的分配内部结构?
什么是**真正**问题。为什么耗尽内存很重要?你有什么具体问题似乎需要巨大的内存块?你可能可以解决这个问题,首先不分配内存。你试图解决的**真正**问题是什么? – 2009-02-21 12:52:32