全部博文(153)
分类:
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效率,cache和buffered的内存是由内核进行动态的配置管理,如果系统的free大小不够的时候,系统会自动释放cache buffer的内存给程序使用。(因此如果是看到used很多,来手动释放内存其实是不需要的)
也就是说Linux会尽可能多的使用内存来提升系统的速度和io效率,但是它有相应的机制来释放内存,其实我们可以简单的理解cache和buffer也是free的空间。
什么时候代表你的内存是不够的呢:就是used很多,但是cache和buffer占的比例很小,说明内存不够了。
看到很多网友说看到used占了很多,free很少不爽,简单的心理:free的内存越多看着越快乐??是吗??那可以建立gnu让free的内存显示为cached buffer的总和,相信网友肯定满意了。送各位一句话:Linux的内存是用来用的,windows的内存是用来看的。