Chinaunix首页 | 论坛 | 博客
  • 博客访问: 717759
  • 博文数量: 182
  • 博客积分: 2088
  • 博客等级: 大尉
  • 技术积分: 1698
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-16 15:09
个人简介

.

文章分类

全部博文(182)

文章存档

2016年(1)

2015年(18)

2014年(14)

2013年(20)

2012年(129)

分类: LINUX

2012-06-15 21:17:04

使用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的内存是用来看的。
阅读(855) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~