3

我有一个以有趣的方式行为不端的金字塔视图。视图所做的是从文件中获取一个非常复杂的对象层次结构(使用 pickle),进行一些处理,然后呈现一个 html 表单。很好很简单。

设置

我正在运行 Ubuntu 12.04 64 位、Python3.2、Pyramid 1.3.3、SQLAlchemy 0.7.8 并使用标准的女服务员服务器。

症状

我遇到了一些效率问题,所以使用系统监视器来尝试查看发生了什么,并发现当金字塔进行处理时,对于我描述的我的 ram 使用率稳步上升的视图。由于 html 表单显示在我的浏览器中,内存使用量趋于平稳,但没有下降。重新加载视图导致 ram 使用量从它停止的地方稳定增长。如果我继续这样做,我所有的内存都用完了,一切都会停止。

如果我杀死服务器,那么内存使用量会立即下降。

问题

这是怎么回事?很明显,视图渲染之间没有释放内存,但是为什么会发生这种情况呢?我怎样才能让它停止?我什至尝试在从视图返回之前调用 del 东西,但没有任何改变。

4

1 回答 1

2

Pyramid 的调试工具栏使对象保持活动状态。停用它可以解决大多数内存泄漏问题。导致我在 Pyramid 中搜索错误的泄漏似乎根本不是 Pyramid 的问题

于 2012-10-01T12:33:35.023 回答