当前位置: 技术问答>linux和unix
遇到奇怪的内存泄露问题,应用程序杀死内存无法释放!
来源: 互联网 发布时间:2016-12-07
本文导语: 应用程序是linux c写的,运行在arm 9平台的开发板中,由于内存只有64M,所以有内存泄露,很快能看到, 我们发现内存有明显的泄露现象,正常情况下应用程序和linux系统共同占的内存数量...
应用程序是linux c写的,运行在arm 9平台的开发板中,由于内存只有64M,所以有内存泄露,很快能看到,
我们发现内存有明显的泄露现象,正常情况下应用程序和linux系统共同占的内存数量为25~26M,也就是说剩余30多M内存是正常的。
我们的应用程序中的malloc 和free函数有限,并且不会申请很大的内存,应用程序占的内存不过几个M,我仔细查找过也没发现有泄露的情况,但是奇怪的事情发生了,应用程序运行三天后剩余内存只有1M,我们杀死了所有的应用程序,但是内存并没有被完全释放,被“吃掉”的内存依然在哪里,剩余的内存虽然增加了一些但是依然只有大概10M。
大家有没有遇到同样的情况,给点思路!谢谢!
我们发现内存有明显的泄露现象,正常情况下应用程序和linux系统共同占的内存数量为25~26M,也就是说剩余30多M内存是正常的。
我们的应用程序中的malloc 和free函数有限,并且不会申请很大的内存,应用程序占的内存不过几个M,我仔细查找过也没发现有泄露的情况,但是奇怪的事情发生了,应用程序运行三天后剩余内存只有1M,我们杀死了所有的应用程序,但是内存并没有被完全释放,被“吃掉”的内存依然在哪里,剩余的内存虽然增加了一些但是依然只有大概10M。
大家有没有遇到同样的情况,给点思路!谢谢!
|
linux系统的原则是最大限度的利用物理内存
你说的那些被“吃掉”的内存,应该用作了系统cache
执行free 命令看看
另外推荐一篇文章 Linux free命令详解 - TRY的专栏 - CSDN博客
你说的那些被“吃掉”的内存,应该用作了系统cache
执行free 命令看看
另外推荐一篇文章 Linux free命令详解 - TRY的专栏 - CSDN博客
|
“可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数”