Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1006751
  • 博文数量: 153
  • 博客积分: 4195
  • 博客等级: 上校
  • 技术积分: 2631
  • 用 户 组: 普通用户
  • 注册时间: 2009-06-22 11:32
文章存档

2012年(7)

2010年(35)

2009年(111)

分类:

2009-06-22 13:06:20

使用Linux会发现一个很奇怪的问题:使用一段时间后(特别是经过了文件的拷贝等操作),用top指令发现内存基本上被占用了,而且Linux不会释放,这个问题的确困扰了我们,我们就开始寻找手动释放内存的方法,的确也找到了。上网搜索也发现很多人存在着这个问题,但是经过对网上结果和我们自己理解的综合分析得出了一个结论:Linux手动释放内存是一个彻彻底底的伪命题。

 

首先讲解一下top的每个选项的含义:

total:所有应用程序可用物理内存
free
:未被应用程序使用的内存

used:
已使用内存

total=free+used

shared:
被共享库所占用的共享内存

buffers:
用于文件缓冲的内存

cached
:内核缓冲虚拟内存

shared,buffers,cached
均包含在used中。

 

实际上内核结束一个程序后,它实际上时会释放内存的,但是内核并没有立刻将这部分收集到free当中,而是存在在cached或者buffer当中,提高系统的io效率,cachebuffered的内存是由内核进行动态的配置管理,如果系统的free大小不够的时候,系统会自动释放cache buffer的内存给程序使用。(因此如果是看到used很多,来手动释放内存其实是不需要的)

 

也就是说Linux会尽可能多的使用内存来提升系统的速度和io效率,但是它有相应的机制来释放内存,其实我们可以简单的理解cachebuffer也是free的空间。

什么时候代表你的内存是不够的呢:就是used很多,但是cachebuffer占的比例很小,说明内存不够了。

看到很多网友说看到used占了很多,free很少不爽,简单的心理:free的内存越多看着越快乐??是吗??那可以建立gnufree的内存显示为cached buffer的总和,相信网友肯定满意了。送各位一句话:Linux的内存是用来用的,windows的内存是用来看的。

阅读(2060) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~