【发布时间】:2019-10-19 17:43:36
【问题描述】:
我使用 GAE(谷歌应用引擎),制作了一个非常简单的网络应用程序。 在处理请求的方法中,我只是创建了一大堆对象。 之后,我删除了对数组的所有引用。 之后,我调用 gc.collect。
但是当我长时间测试(发送请求)时,Dashboard 的内存使用量不断增加。
我看起来像内存泄漏。 但我认为代码还可以。
以下是示例代码。
from flask import Flask, request
import gc
app = Flask(__name__)
@app.route('/', methods=['POST'])
def hello():
gc.enable()
bigArr = []
for x in range(10000):
raw_data = request.get_data(cache=False)
bigArr.append(raw_data)
del raw_data
print('len(bigArr):' + str(len(bigArr)))
del bigArr
gc.collect()
return 'Hello World'
if __name__ == '__main__':
app.run(host='0.0.0.0', port=80, debug=True)
应用引擎配置: 运行时:python37 自动缩放: 最大实例数:1
【问题讨论】:
-
我想补充更多信息,配置如下:runtime: python37 automatic_scaling: max_instances: 1
-
很多人都有这个问题,但我从来没有看到一个令人满意的解释为什么 Python 不能更快地释放内存。您会认为超出范围的变量足以释放内存。我希望 Python 专家能介入并解释这一点。
-
一些可能有用的链接:NDB caching,mleak,track Apptrace
标签: python google-app-engine memory-management memory-leaks