程序消耗大量内存如何检测
各位达人,最近碰到一个问题,我们的程序出现了使用以后消耗大量内存的情况,使用时间越长消耗越多,最后导致死机.请教各位,导致这种情况出现的问题在哪,如何检测程序对内存的消耗~?有什么办法解决? 这个。。代码中没写释放内存吧。检测内存问题
根据你所描述的情况,看来是内存泄漏的问题。解决办法建议:在Windows平台下,检测内存泄漏的工具常用的一般有三种,MS C-Runtime Library内建的检测功能;外挂式的检测工
具,诸如,Purify,BoundsChecker等;利用Windows NT自带的Performance Monitor。这三种工具各有优缺点,
MS C-Runtime Library虽然功能上较之外挂式的工具要弱,但是它是免费的;Performance Monitor虽然无法标示出发
生问题的代码,但是它能检测出隐式的内存泄漏的存在,这是其他两类工具无能为力的地方。
所以,你可以根据具体情况选择一个合适的检测内存泄漏的工具,来辅助你测试。 可以肯定的是,程序中写了释放内存的代码.只是不确定是否真正释放了内存.
回复 #3 god 的帖子
谢谢~!!我试试您说的那几个工具!各位还有何高见欢迎提出来~! 肯定是内存泄漏撒 Purify 内存泄露,没跑了....程序写的时候怎么都不注意这问题呢,开了块内存空间用完了就要释放和关闭嘛!常识哦 乱开内存的话释放也会出现内存碎块的问题,也会导致内存不足....这种问题完全可以用编程规范守则来解决 不同的语言对检测工具不同的
c++:
purify 在linux 和windows 都可用。
linux上可以用vagrind
java 可用jprobe,jstat等等
肯定是内存泄露
1.用performance monitor执行内存总量对比分析,添加进程,并选中系统\线程,找到哪个进程、线程出现内存泄露2.用Purify执行找到模块的内存、堆栈、数组等的边界分析。
3.和开发人员一起分析,在修改后执行回归测试,一般问题就可以搞定了。 学习 方法有多种,首先你要定位的是,内存到底用到了什么地方,如某个功能模块;另外这个也不一定是有问题,也有可能你分配的内存本来就不够用 来学习 首先确定是应用的问题?
其次针对不同的语言有不同的工具。 顶。。。 学习 学习
页:
[1]