利用meliae来监控python进程的内存占用情况

meliae是一个python进程内存占用监控、分析工具,它的安装需要依赖pyrex包。

一、安装:

安装python内存分析工具
sudo pip install cython
sudo pip install meliae


二、使用:

meliae会把某个时刻的内存给dump到一个文件中,然后再对该文件进行分析,当我们的某个python程序占用内存很大,可能有内存泄露发生时,可以使用该工具来进行检测分析。

scanner.dump_all_objects()

om = loader.load()
om.compute_parents()
om.collapse_instance_dicts()
print om.summarize()


1、在需要dump内存的地方,写上以下代码即可:

from meliae import scanner

scanner.dump_all_objects('/opt/log/dump.txt')

这样,我们就可以把当前的内存Objects都导出到了dump.txt。

2、然后再进行分析:

from meliae import loader

#加载dump文件

om = loader.load('/opt/log/dump.txt')

#计算各Objects的引用关系

om.compute_parents()

#去掉各对象Instance的_dict_属性

om.collapse_instance_dicts()

#分析内存占用情况

print om.summarize()

3、我的某个python程序分析结果如下:

Total 333015 objects, 188 types, Total size = 52.8MiB (55414199 bytes)

Index Count % Size % Cum Max Kind

0 10620 3 18096480 32 32 1704 POP3ClientProtocol

1 133004 39 6290033 11 44 31457 str

2 10628 3 5866656 10 54 552 Connector

3 10628 3 5866656 10 65 552 POP3ClientFactory

…….

从上面可以看到,共有333015个对象,占用了52M的内存

其中,共有10620个POP3ClientProtocol对象实例,占用了32%约18M的内存

最大的对象也只占用了1.7K的内存,但由于对象很多,所以最终它占用的内存就很大了

那么,我们就大概知道了内存泄露的地方,就是这个POP3ClientProtocol对象,在使用完成之后,没有释放造成的

我们还可以继续分析某个对象,找出它的引用关系


#得到所有的POP3ClientProtocol对象  

p = om.get_all('POP3ClientProtocol')  

#查看第一个对象  

p[0]  

说明该对象的地址为2803894924,占用了1.7K内存,引用了51个对象,它被1个对象所引用  

>>>POP3ClientProtocol(2803894924 1704B 51refs
 1par)  

#可以查看该对象的所有引用  

p[0].c

>>>[str(3079323384 33B 10647par 'popuserid'), str(2814724096 45B 1par 'fuzimiao2000@sohu.com'), str(3079036128 31B 10624par 'mailnum'), int(165090672 12B 29par '75'),

#查看谁引用了这个对象

p[0].p

>>>[POP3ClientFactory(2803893100 552B 15refs 3par)]


转载于:https://my.oschina.net/markco/blog/601773

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值