python内存持续上升有关问题请问
python内存持续上升问题请教
一个项目用的python写的,但是其内存会不断的上升,并且不固定的上升,有时候可能一个小时涨10M+,有时候可能几个小时涨1M+,求高人指点如何入手定位此问题,本人刚python入门。
在网上找了相关资料,使用objgraph时一直会有错误:
Graph written to /tmp/objgraph-NUPXs5.dot (7 nodes)
Graph viewer (xdot) and image renderer (dot) not found, not doing anything else
在网上找了很多都无法解决,如高人知道请指点,非常感谢。
------解决方案--------------------
dot是graphviz(http://www.graphviz.org/)的一个命令,安装graphviz。
你的程序是做什么的?是否持续的有数据生成?内存涨的多或少时,你的程序的状态有什么不同:有/无输入,有/无新连接(web app的话),有/无操作(有GUI的话)等等。
------解决方案--------------------
可能还要xdot才行。
你的消息推送后,是不是还有对它们的引用(例如它们都放在一个list中)存在,所以无法释放它们所占的内存。 症状是接受消息多时,内存占用增加的快。
------解决方案--------------------
内存不断增加,对于程序员来说,首先可能会想内存泄露,但对于类似Python/Perl之类的脚本语言,内存泄露的可能性非常小。所以,我们首先考虑程序本身的行为和现象是否有关系。一般程序会有日志,通过日志察看一下程序在内存增长时到底在干什么,可能会对你更有帮助。
------解决方案--------------------
1. 确定你用的是python3.2,或者更高。
python2会有变量释放后,内存不释放时间不确定的问题。
python3开始,会有一个限制值。当空闲内存块数量过多时,系统会及时释放内存。
2. 程序中的list、dict等,要限制元素的最大数量。
3. 使用完成,及时释放变量。
------解决方案--------------------
另外,要限制多进程、多线程的最大数量。
网络连接,用完了要及时关闭。
等等。
一个项目用的python写的,但是其内存会不断的上升,并且不固定的上升,有时候可能一个小时涨10M+,有时候可能几个小时涨1M+,求高人指点如何入手定位此问题,本人刚python入门。
在网上找了相关资料,使用objgraph时一直会有错误:
Graph written to /tmp/objgraph-NUPXs5.dot (7 nodes)
Graph viewer (xdot) and image renderer (dot) not found, not doing anything else
在网上找了很多都无法解决,如高人知道请指点,非常感谢。
------解决方案--------------------
dot是graphviz(http://www.graphviz.org/)的一个命令,安装graphviz。
你的程序是做什么的?是否持续的有数据生成?内存涨的多或少时,你的程序的状态有什么不同:有/无输入,有/无新连接(web app的话),有/无操作(有GUI的话)等等。
------解决方案--------------------
可能还要xdot才行。
你的消息推送后,是不是还有对它们的引用(例如它们都放在一个list中)存在,所以无法释放它们所占的内存。 症状是接受消息多时,内存占用增加的快。
------解决方案--------------------
内存不断增加,对于程序员来说,首先可能会想内存泄露,但对于类似Python/Perl之类的脚本语言,内存泄露的可能性非常小。所以,我们首先考虑程序本身的行为和现象是否有关系。一般程序会有日志,通过日志察看一下程序在内存增长时到底在干什么,可能会对你更有帮助。
------解决方案--------------------
1. 确定你用的是python3.2,或者更高。
python2会有变量释放后,内存不释放时间不确定的问题。
python3开始,会有一个限制值。当空闲内存块数量过多时,系统会及时释放内存。
2. 程序中的list、dict等,要限制元素的最大数量。
3. 使用完成,及时释放变量。
------解决方案--------------------
另外,要限制多进程、多线程的最大数量。
网络连接,用完了要及时关闭。
等等。