我正在Heroku上部署一个Python应用程序,它必须加载一个~40 MB的JSON文件。即使Heroku告诉我它应该有512 MB的RAM,应用程序也会因内存不足而崩溃。为什么会发生这种情况,我能解决吗?错误日志(来自heroku日志)如下:
2016-02-15T01:10:39.367715 + 00:00 heroku [web.1]:进程退出状态为137 2016-02-15T01:10:52.785020 + 00:00 heroku [web.1]:正在运行的进程mem = 731M(142.6%) 2016-02-15T01:10:52.785020 + 00:00 heroku [web.1]:错误R14(超出内存配额)
答案 0 :(得分:0)
如果它卡在递归循环中,它会给你一个内存不足的错误。
答案 1 :(得分:0)
变量或结构的内存中表示远大于文件表示。例如,
import sys
sys.getsizeof({}) # => 288 bytes
sys.getsizeof([]) # => 64 bytes
sys.getsizeof("abc") # => 52 bytes
sys.getsizeof(12) # => 28 bytes
(请注意,这些值是在Windows 10上使用Cython 3.4 64位获得的;您的值可能会因您的操作系统和python版本而异。)
我做了一个快速测试:一个33 KB的.json文件在内存中变成了188 KB。根据您的数据嵌套程度,40 MB文件很可能需要350 MB内存才能解压缩,而且不包括程序/ OS /等使用的其他内存。