当前位置: 技术问答>linux和unix
linux中,大家的程序是如何来控制内存泄漏的?
来源: 互联网 发布时间:2015-11-25
本文导语: 特别是一些比较大的程序,如果还有异步的通讯,内存泄露问题应该更难控制了。 那个老哥知道一半如何控制? | 一般靠程序员经验控制。也可以把内存分配释放功能封装起来。有一些类似...
特别是一些比较大的程序,如果还有异步的通讯,内存泄露问题应该更难控制了。
那个老哥知道一半如何控制?
那个老哥知道一半如何控制?
|
一般靠程序员经验控制。也可以把内存分配释放功能封装起来。有一些类似智能指针的技巧能实现内存的自动释放,我碰到的一些大型项目就是如此。
编程之外,也可以用一些内存泄露检测工具在运行时来测试是否有内存泄露,这样的工具很多,比如免费的memprof
编程之外,也可以用一些内存泄露检测工具在运行时来测试是否有内存泄露,这样的工具很多,比如免费的memprof
|
同楼上,推荐2个工具把,purfy以及insure++都是很不错的工具。对程序中内存大错误的检查有很大的帮助。包括内存泄漏,数组越界读写什么的。
|
绝对防止内存泄漏感觉真的很难,因此我除了用检测工具和小心编程外,觉得用多进程的处理模式可以很好的解决这个问题,让进程具有一定生命周期,这样内存泄漏的影响就大大降低了。同时觉得在内存泄漏上耗费过多精力也不值得。采用多种方式来防止感觉比较有效。
|
补充一点,多进程方式我发现在UNIX上本来就用得很多,开销也不是想象中那么大,多线程加多进程的方式在HTTPD等上都比较普遍,进程结束对内存泄漏来说是克星,只是你要小心安排进程和线程的协调。
|
teal(茶茶):
这个是C++因为没有GC而带来的问题,没有一劳永逸的解决方案。楼上几位的描述已是经验之谈。
这个是C++因为没有GC而带来的问题,没有一劳永逸的解决方案。楼上几位的描述已是经验之谈。
|
还有一个很好用的工具:valgrind
|
有很多工具,如Purify,BoudsCheck,CodeTest等。
|
memwatch也不错的!