51Testing软件测试论坛

标题: 内存泄漏 [打印本页]

作者: annabel321    时间: 2007-7-25 13:57
标题: 内存泄漏
昨天去面试,遇到这样一道面试题.
问:一般出现内存泄漏的原因是什么?通常如何防止内存泄漏?
感觉范围太广,就没作答.今天查了一下,也没个所以然,于是就到这里来请教,希望知道的朋友能告知一下,小妹在此先谢过啦!


[ 本帖最后由 annabel321 于 2007-7-25 14:42 编辑 ]
作者: 重庆洛洛    时间: 2007-7-25 16:40
我们新作的系统好像就遇到过内存泄漏的问题……回忆一下,好像是内存占到了接近1G的时候,很多进程就被杀掉了……貌似是这么引起的,具体的忘了,我们当时的解决办法是,换了一种方式来处理程序,并没有直接去解决内存泄漏的问题,要防止应该是很难的。
你是面试什么啊,问这种问题,这貌似应该程序员解决的事情
作者: scorix    时间: 2007-7-25 19:08
申请了内存空间没有释放就会导致内存泄露。
发现某处申请了空间,则在程序中找何处释放了该空间。也有工具能检测内存泄露。
作者: annabel321    时间: 2007-7-25 20:53
面试测试呀,当时题目也没要求是在哪种语言里面泄漏,只是觉得会有很多种可能,但一时又说不上来,更别说防止措施了,嘿嘿,谢谢呀!
作者: NODDY820    时间: 2007-7-25 21:42
赞同3楼的解释,由于程序中某个或某几个函数申请了内存,但在函数结束前未对之前申请的内存进行释放,这就会导致内存泄漏,虽然该导致内存泄漏的函数每次申请的内存并不大,但如果该函数被反复调用,内存会被占用愈来愈多,造成系统内存资源紧张。
我想应从大到小排查,即从模块级开始,直至定位到某一函数,可反复调用(几百次)可疑模块或函数,并通过性能监测工具观察内存占用情况。排查的工作量是相当大的。
要防防止内存泄漏,开发人员应养成良好的编程习惯,做到在哪里申请了内存,用完后就及时释放。走读代码时看到申请内存的语句,就要关注是否有相应的释放语句。

[ 本帖最后由 NODDY820 于 2007-7-25 21:44 编辑 ]
作者: 测试有前途    时间: 2007-7-25 22:27
内存申请到后 使用完 却没有释放~
作者: 119139107    时间: 2007-7-26 09:17
这个问题碰到过一直没解决 感谢告知
受益匪浅
学习中。。。。。。
作者: 青青    时间: 2007-7-26 10:47
6楼正解
作者: 小老虎菲菲    时间: 2007-7-26 14:21
出这个问题的原因比较多,估计是内存不足,用硬件上解决是加内存
然后是优化程序,通常是程序造成内存泄漏,还有就是楼上说的释放些空间不来
如果说到防止就要经常把不用的程序什么的释放出来保证有足够的内存空间
作者: jamesxiang    时间: 2007-7-26 16:21
这要看代码来解决了。内容泄漏由于申请了内存空间,没有释放所产生的。可以使用专门的内存泄漏检查工具来检查。
作者: xiongxing    时间: 2007-8-6 20:27
第一次听说,学习了.
作者: 这里小白真多    时间: 2007-8-7 08:41
很简单:new完以后没有释放。。。。
作者: annabel321    时间: 2007-9-16 11:10
嗯,受益匪浅.
谢谢各位兄弟姐妹啦!




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