shenwei007 发表于 2007-3-23 14:13:12

程序消耗大量内存如何检测

各位达人,最近碰到一个问题,我们的程序出现了使用以后消耗大量内存的情况,使用时间越长消耗越多,最后导致死机.请教各位,导致这种情况出现的问题在哪,如何检测程序对内存的消耗~?有什么办法解决?

波波天地 发表于 2007-3-23 16:21:57

这个。。代码中没写释放内存吧。

god 发表于 2007-3-25 22:05:42

检测内存问题

根据你所描述的情况,看来是内存泄漏的问题。解决办法建议:
在Windows平台下,检测内存泄漏的工具常用的一般有三种,MS C-Runtime Library内建的检测功能;外挂式的检测工
具,诸如,Purify,BoundsChecker等;利用Windows NT自带的Performance Monitor。这三种工具各有优缺点,
MS C-Runtime Library虽然功能上较之外挂式的工具要弱,但是它是免费的;Performance Monitor虽然无法标示出发
生问题的代码,但是它能检测出隐式的内存泄漏的存在,这是其他两类工具无能为力的地方。
所以,你可以根据具体情况选择一个合适的检测内存泄漏的工具,来辅助你测试。

shenwei007 发表于 2007-3-27 17:05:07

可以肯定的是,程序中写了释放内存的代码.只是不确定是否真正释放了内存.

shenwei007 发表于 2007-3-27 17:07:58

回复 #3 god 的帖子

谢谢~!!我试试您说的那几个工具!
各位还有何高见欢迎提出来~!

rickyzhu 发表于 2007-3-28 14:28:50

肯定是内存泄漏撒

Seu_why 发表于 2007-10-26 13:34:54

Purify

cangmang 发表于 2007-11-12 14:22:10

内存泄露,没跑了....程序写的时候怎么都不注意这问题呢,开了块内存空间用完了就要释放和关闭嘛!常识哦

cangmang 发表于 2008-2-18 10:38:56

乱开内存的话释放也会出现内存碎块的问题,也会导致内存不足....这种问题完全可以用编程规范守则来解决

liangjz 发表于 2008-5-15 00:31:53

不同的语言对检测工具不同的
c++:

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

java 可用jprobe,jstat等等

wenhigher 发表于 2008-10-9 17:12:17

肯定是内存泄露

1.用performance monitor执行内存总量对比分析,添加进程,并选中系统\线程,找到哪个进程、线程出现内存泄露
2.用Purify执行找到模块的内存、堆栈、数组等的边界分析。
3.和开发人员一起分析,在修改后执行回归测试,一般问题就可以搞定了。

peag 发表于 2010-7-24 10:41:14

学习

msnshow 发表于 2010-7-25 22:42:10

方法有多种,首先你要定位的是,内存到底用到了什么地方,如某个功能模块;另外这个也不一定是有问题,也有可能你分配的内存本来就不够用

liuhaisheng2008 发表于 2010-8-5 13:29:25

来学习

大漠行者 发表于 2010-10-8 11:31:22

首先确定是应用的问题?
其次针对不同的语言有不同的工具。

Gasgoo 发表于 2010-10-15 15:26:25

顶。。。

gforg 发表于 2010-10-21 17:48:20

学习

crazymartin 发表于 2010-10-21 17:50:13

学习
页: [1]
查看完整版本: 程序消耗大量内存如何检测