我意识到在一个python脚本中存在内存泄漏。其中第一个大约占用了25MB,15天后超过了500MB。从调试器中打印python中的所有可用元组
我跟很多不同的方式,并不能进入问题的根源是作为一个python新手...
最后,我得到了这个以下
objgraph.show_most_common_types(limit=20)
tuple 37674
function 9156
dict 3935
list 1646
wrapper_descriptor 1468
weakref 888
builtin_function_or_method 874
classobj 684
method_descriptor 551
type 533
instance 483
Kind 470
getset_descriptor 404
ImmNodeSet 362
module 342
IdentitySetMulti 333
PartRow 331
member_descriptor 264
cell 185
FontEntry 170
我设置断点点,并在每次迭代后,这是发生了什么...
objgraph.show_growth()
tuple 37674 +10
什么是继续进行的最好方法?
(Pdb) c
(Pdb) objgraph.show_growth()
tuple 37684 +10
我猜打印所有元组和交叉检查 - 这是什么10元组被添加每次都会给我一些线索?请让我知道该怎么做..
或者有没有其他的方法来找出此内存泄漏。我使用的是Python 2.4.3,还有很多其他的产品依赖关系 - 不幸的是,我不能/不应该升级。
它是一个非常庞大的脚本(超过3个模块),并且对python来说是新的,所以在通过整个脚本之后也无法找到。我仍然在寻找打印所有元组或至少打印全局元组的方式......但是还没有运气! – user379997