用top命令查看一个进程,虚拟内存一直不变,但物理内存每时5s增长12k或20k.

socrates 2010-03-28 12:28:55
用top命令查看一个进程,虚拟内存一直不变,但物理内存每天增长4M,用pmap查看,每5s增长12k或20k,一直没有分析出是哪里出了问题,请教各位这种情景是否确实为内存泄露?有没有更好的分析方法?给小弟点思路。谢谢!
...全文
899 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
socrates 2010-07-24
  • 打赏
  • 举报
回复
我当时用了不下十种内存定位的方法,后来找平台人(我们产品是跑在公司的平台上的,这个平台是将OS的差异分装了一下)问了下,他们说当前他们的内存分配算法就是那样,内存增长是一个半椭圆的曲线,达到峰值后会下将,最终平稳。
dadun 2010-07-14
  • 打赏
  • 举报
回复
我也遇到这个问题了...虚拟内存不变,但是物理内存增长。

我用了vargrind没有说内存泄露,不知道这个问题怎么解决。

要是一直增长起来没完了,那不死了么?
socrates 2010-04-16
  • 打赏
  • 举报
回复
感谢各位,后来经过好多兄弟一起分析,结论:不存在内存泄露,linux内存分配机制就是这样的。具体原因没有考证,有空了学习下再详细回贴,散分先。
steptodream 2010-03-28
  • 打赏
  • 举报
回复
楼上分析的很详细
你监控了多久 得出的结论是 物理内存每天增长4M
把你的free -m后的结果 贴出来看看
iisbsd 2010-03-28
  • 打赏
  • 举报
回复
虚拟内存不长通常就没有内存泄漏。物理内存增长通常是你的活跃数据/代码越来越多,所以都慢慢被调进无力内存了,不是很大的问题,具体的分析要看你的程序是什么性质。

举个简单的例子,上来就分配了一个大数组,然后随着程序的运行往其中增加不重复值,这样每次增加的时候你都会读取/移动部分数组。在这种情况下,虚拟内存是不会变的(没有申请更多空间),但是物理内存会越来越大,因为你访问的数据越来越多。
  • 打赏
  • 举报
回复
哪个进程的程序没写好吧,内存泄露,用vargrind跟踪一下看看,哪里漏了。

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧