Linux下查看内存的使用情况

Linux下使用什么方法来查看内存的使用情况呢?我想监视Linux系统的内存使用情况,在Linux下有哪些视图或者命令行工具可用呢?

在做Linux系统优化的时候,物理内存是其中最重要的一方面。自然的,Linux也提供了非常多的方法来监控宝贵的内存资源的使用情况。下面的清单详细的列出了Linux系统下通过视图工具或命令行来查看内存使用情况的各种方法

一、free

  对于free命令,可以加上-m参数,使其显示单位为Mb。如下:

[linuxidc@Ubuntu ~]$>free total used free shared buffers cached Mem: 1008504 547364 461140 12836 53984 254508 -/+ buffers/cache: 238872 769632 Swap: 1046524 0 1046524

[linuxidc@ubuntu ~]$>free -m
            total      used     
free    shared    buffers    cached
Mem:         
984        534        450        12        52        248
-/+ buffers/cache:        233        751
Swap:       
1021          0      1021

  这里出现了一些名词,有些是我不知道的,我专门去查了一下它们所代表的含义。

total   used   free   shared   buffers   cached  
Mem   表示物理 内存总量  

表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用

  未被分配的内存   共享内存   系统分配但未被使用的buffers 数量   系统分配但未被使用的cache 数量  
实际使用的buffers 与cache 总量,也是实际使用的内存总量   未被使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存  
Swap  

  同样是做为缓存,buffers和cache又有啥区别呢?

  于是又查了些资料,发现buffers实际应该是叫“缓冲”,其英文解释是:A buffer is something that has yet to be "written" to disk.

  就是说,buffers是将要写入硬盘中的数据缓存。

  而cache的英文解释:A cache is something that has been "read" from the disk and stored for later use.

  就是说,cache是从硬盘或者存储设备读进计算机后缓存在内存中的数据。

  想起看《计算机组成原理》的时候,有看到因特尔的cpu与内存之间有cache,这之间好像有什么区别的样子。

  继续查资料,发现了page cache 和 buffer cache。简单说来,page cache用来缓存文件数据,buffer cache用来缓存磁盘数据。在有文件系统的情况下,对文件操作,那么数据会缓存到page cache,如果直接采用dd等工具对磁盘进行读写,那么数据会缓存到buffer cache。 

  对于cache和buffer,cached是cpu与内存间的,buffer是内存与磁盘间的,都是为了解决速度不对等的问题。

  在free中,buffer 是buffer cache的内存,是块设备的读写缓冲区;cache是page cache的内存, 文件系统的cache。

  关于buffer与chche,这里就不多说了,最后的链接5里讲得挺清楚了。

  这里还有一个名词,Swap,即虚拟内存。当物理内存不够用的时候,就要释放掉一部分空间,以供当前运行程序使用。这些被释放掉的内存的数据就被临时保存在虚拟内存中。但是,并非所有的数据都全被保存,只有那些使用malloc或new生成的对象,他们在文件中并没有相应的“储备”文件,被称为匿名内存数据,需要临时地存进Swap。故Swap又称匿名数据交换空间。在链接3中有其说明。

  至于shared,暂时没查到与之相关的资料,只是在某链接里提了一下其不常用。

二、top命令

  top命令就好像是“linux下的任务管理器”:

Linux下查看内存的使用情况

  其中,第一行的内容与uptime命令的结果是一样的

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/14635.html