免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5469 | 回复: 5
打印 上一主题 下一主题

请问在aix下有什么程序能查内存泄漏? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-02-02 16:38 |只看该作者 |倒序浏览
做了一个服务程序,但是访问数量达到5w左右时就是被停掉,怀疑是内存泄漏的问题。但是由于是多进程服务器,实在是不太好dbg,请问有什么办法能比较好的处理这个问题?谢谢。

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
2 [报告]
发表于 2010-02-02 17:27 |只看该作者
回复 1# infog

确认程序是否有内存泄露的一个方法:通过ps来看进程占用的内存大小。可以每隔一定时间看一下占用的内存大小,比如1分钟。如果占用的内存一直在增加,那应该就有内存泄露。

避免内存泄露的方法,就是动态分配的内存,用完后一定要记得释放!
我觉得只能通过静态检查代码来找出有内存泄露的地方,并改正过来。也有辅助工具,可以帮助快速定位到可能有内存泄露的地方。

论坛徽章:
0
3 [报告]
发表于 2010-02-02 17:45 |只看该作者
vmstat 2 //2秒钟检查一次内存使用状况, 挺土的吧

论坛徽章:
4
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:56:11IT运维版块每日发帖之星
日期:2016-08-11 06:20:00IT运维版块每日发帖之星
日期:2016-08-15 06:20:00
4 [报告]
发表于 2010-02-02 17:56 |只看该作者
vmstat 2 //2秒钟检查一次内存使用状况, 挺土的吧
bittertea 发表于 2010-02-02 17:45


vmstat看的是系统的内存使用情况,不能用通过vmstat来衡量某一个进程的内存占用情况。
一定要通过 ps <options> | grep <process name> 来查看该进程的内存占用,例如:
ps ef | grep test

论坛徽章:
0
5 [报告]
发表于 2010-02-02 18:35 |只看该作者
首先确定,是否有内存泄露,ps -ef -o cmd , vsz|grep progname 可以写个while循环1秒钟记录一下。VSZ代表了一个进程内存的需求。如果虚拟内存有增长,最好的办法还是封代码,现有的内存检测的工具,对于服务器程序都不太好用,原因如下,1.需要程序退出后,才能确定有无泄露。2.对于采用内存池方式的经常误报。还有more 一下这个进程的fd,资源泄露也是可能的。AIX上每个进程的fd数目也是有限制的。

论坛徽章:
0
6 [报告]
发表于 2010-02-03 10:51 |只看该作者
thanks all.
不过用那个vmstat看了下,只要那个服务程序被停掉,就释放出很多空间。可是程序里的new应该都释放掉了。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP