经过更多的调查,在谷歌工程师的帮助下,我发现
对我的记忆力消耗的两种解释。
上下文和线程
ndb.上下文是一个“线程本地”对象,只有在新的
请求进入线程。所以线程在请求之间保持它。很多
线程可能存在于一个GAE实例中,它可能需要数百个请求
在第二次使用线程并清除其上下文之前。
这不是内存泄漏,但内存中的上下文大小可能超过
小GAE实例中的可用内存。
解决方法:
不能配置GAE实例中使用的线程数。的确如此
最好使每个上下文尽可能小。避免上下文缓存,并清除
每次请求后都会被删除。
事件队列
NDB似乎不能保证事件队列在一个
请求。同样,这不是内存泄漏。但它在你的生活中留下了未来
线程上下文,回到第一个问题。
解决方法:
将所有使用NDB的代码包装为
@ndb.toplevel公司.



