不知何故,我的Python程序在运行时会占用越来越多的内存( VIRT和RES) "top“命令的列不断增加。
然而,我非常仔细地仔细检查了我的代码,我确信没有内存泄漏(没有使用任何字典,没有全局变量。这只是一个main方法多次调用子方法)。
我使用heapy来分析我的内存使用情况
from guppy import hpy;
heap = hpy();
.....
print heap.heap();
每次main方法都会调用sub方法。令人惊讶的是,它总是给出相同的输出。但是内存使用量一直在增长。
我想知道我是否没有正确使用heapy,或者"top“命令中的VIRT和RES并没有真正反映我的代码使用的内存?
或者,是否有人能提供更好的方法来跟踪Python脚本中的内存使用情况?
非常感谢!
发布于 2011-07-25 14:39:51
两种可能的情况:
- you are storing an increasing number of large objects
- you are having cycles of objects with a `__del__` method, which the gc won't touch
我建议使用gc
模块以及gc.garbage
和gc.get_objects
函数(请参阅http://docs.python.org/library/gc.html#module-gc)来获取现有对象的列表,然后您可以通过查看每个对象的__class__
属性来检查它们,以获取有关对象类的信息。
的详细信息,请参阅this question
https://stackoverflow.com/questions/6809947
复制相似问题