51Testing软件测试论坛

标题: 程序消耗大量内存如何检测 [打印本页]

作者: shenwei007    时间: 2007-3-23 14:13
标题: 程序消耗大量内存如何检测
各位达人,最近碰到一个问题,我们的程序出现了使用以后消耗大量内存的情况,使用时间越长消耗越多,最后导致死机.请教各位,导致这种情况出现的问题在哪,如何检测程序对内存的消耗~?有什么办法解决?
作者: 波波天地    时间: 2007-3-23 16:21
这个。。代码中没写释放内存吧。
作者: god    时间: 2007-3-25 22:05
标题: 检测内存问题
根据你所描述的情况,看来是内存泄漏的问题。解决办法建议:
在Windows平台下,检测内存泄漏的工具常用的一般有三种,MS C-Runtime Library内建的检测功能;外挂式的检测工
具,诸如,Purify,BoundsChecker等;利用Windows NT自带的Performance Monitor。这三种工具各有优缺点,
MS C-Runtime Library虽然功能上较之外挂式的工具要弱,但是它是免费的;Performance Monitor虽然无法标示出发
生问题的代码,但是它能检测出隐式的内存泄漏的存在,这是其他两类工具无能为力的地方。
所以,你可以根据具体情况选择一个合适的检测内存泄漏的工具,来辅助你测试。
作者: shenwei007    时间: 2007-3-27 17:05
可以肯定的是,程序中写了释放内存的代码.只是不确定是否真正释放了内存.
作者: shenwei007    时间: 2007-3-27 17:07
标题: 回复 #3 god 的帖子
谢谢~!!我试试您说的那几个工具!
各位还有何高见欢迎提出来~!
作者: rickyzhu    时间: 2007-3-28 14:28
肯定是内存泄漏撒
作者: Seu_why    时间: 2007-10-26 13:34
Purify
作者: cangmang    时间: 2007-11-12 14:22
内存泄露,没跑了....程序写的时候怎么都不注意这问题呢,开了块内存空间用完了就要释放和关闭嘛!常识哦
作者: cangmang    时间: 2008-2-18 10:38
乱开内存的话释放也会出现内存碎块的问题,也会导致内存不足....这种问题完全可以用编程规范守则来解决
作者: liangjz    时间: 2008-5-15 00:31
不同的语言对检测工具不同的
c++:

purify 在linux 和windows 都可用。
linux上可以用vagrind

java 可用jprobe,jstat等等
作者: wenhigher    时间: 2008-10-9 17:12
标题: 肯定是内存泄露
1.用performance monitor执行内存总量对比分析,添加进程,并选中系统\线程,找到哪个进程、线程出现内存泄露
2.用Purify执行找到模块的内存、堆栈、数组等的边界分析。
3.和开发人员一起分析,在修改后执行回归测试,一般问题就可以搞定了。
作者: peag    时间: 2010-7-24 10:41
学习
作者: msnshow    时间: 2010-7-25 22:42
方法有多种,首先你要定位的是,内存到底用到了什么地方,如某个功能模块;另外这个也不一定是有问题,也有可能你分配的内存本来就不够用
作者: liuhaisheng2008    时间: 2010-8-5 13:29
来学习
作者: 大漠行者    时间: 2010-10-8 11:31
首先确定是应用的问题?
其次针对不同的语言有不同的工具。
作者: Gasgoo    时间: 2010-10-15 15:26
顶。。。
作者: gforg    时间: 2010-10-21 17:48
学习
作者: crazymartin    时间: 2010-10-21 17:50
学习




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2