我正在尝试优化我的django1.8项目的内存使用情况,并且我注意到,即使从初始化开始,它也使用了80+MB,这似乎太过分了。当我简单地运行./manage shell --plain
时,我观察到了这一点。相比之下,一个启动时的空Django项目只使用30MB。我想知道是什么在消耗这么多的内存。在
我试图通过删除它的各种应用程序来减少它的内存消耗。我试着翻了gc.get_objects
,但这是不可理解的。我对tracemalloc
很感兴趣,所以我构建了一个包含tracemalloc
的自定义Python2.7.8,结果发现它不会开始跟踪,直到我从提示符调用start()
,此时内存已经被消耗掉了。在
问题:
是的,我意识到版本急需升级。谢谢!在
更新1
我确实设法利用了一些tracemalloc
。我插入了导入并从manage.py
的开头开始。在
/Users/john/.venv/proj-tracemalloc/lib/python2.7/site-packages/zinnia/comparison.py:19: size=25.0 MiB (+25.0 MiB), count=27168 (+27168), average=993 B
/usr/local/tracemalloc-py2.7.8/py27/lib/python2.7/importlib/__init__.py:37: size=3936 KiB (+3936 KiB), count=9581 (+9581), average=420 B
...
它确实揭示了一个有趣的东西-这第一行是一个博客应用程序。这个循环似乎占用了大量内存,虽然我猜是临时的。到3号线,所有数据都是1.5MB或更小。在
^{pr2}$更新2
我经历了卸载软件包、应用程序和修复损坏代码的繁琐过程。最后,看起来可能10MB是由于我的内部应用程序造成的,25MB是由于Django调试工具栏造成的。这让我降到了45MB。我的核心应用程序占用15MB的内存,并将其降低到30MB的核心,这似乎并不不合情理。我不在生产环境中使用工具栏,但它确实需要额外的内存才能正常工作。在
最后,我并没有学到多少东西,但至少没有什么东西是错误的。我对tracemalloc
感到失望,但希望它能更好地集成到Python3中。在
目前没有回答
相关问题 更多 >
编程相关推荐