Linux新手,今天使用了free命令来查看电脑内存的使用情况。如下:-m表示以M来显示。
1、基本信息介绍
(1)其中纵向信息:
Mem:表示物理内存大小
-/+ buffers/cached:表示物理内存的缓存统计
Swap:表示硬盘上交换分区的使用情况。
(2)横向信息:
第1行Mem(从系统的角度看内存):
total 内存总数:
768M
used 已经使用的内存数:
361M
free 空闲的内存数:
406M
shared
共享内存(一般系统不会用到):0
buffers 缓存内存数:
0
cached 缓存内存数:307M
注:关于buffers和cached的区别:buffers是用于存放要输出到disk(块设备)的数据,而cache是存放从disk上读出的数据。为了提高文件读取的性能,当应用程序需要用到内存的时候,buffers/cached会很快地被回收。
-------------------------------------------------
第2行-/+ buffers/cache(从应用程序角度看内存):
-buffers/cache 的内存数:54 (等于第1行的 used - buffers - cached)
+buffers/cache 的内存数: 713 (等于第1行的 free + buffers + cached)
注:-buffers/cache反映的是被程序实实在在使用的内存,而+buffers/cache反映的是程序认为系统还有多少内存.
------------------------------------------------
第3行Swap,内存交换空间。
当物理内存不足时,系统便会使用swap。我们知道CPU所读取的数据都来自于内存,当内存不足时,为了让后续程序能顺利执行,内存中暂不使用的程序与数据就会被挪到swap中。此时内存就会空出来给需要执行的程序加载。
由于swap是由硬盘来暂时放置内存中的信息,一般来说, swap 最好不要被使用,尤其swap 最好不要被使用超过20% 以上, 如果您发现swap 的用量超过20% ,那么,最好还是考虑升内存吧,您的电脑受不起折磨了。
2、拓展学习
(1)free命令的信息来源于/proc/meminfo文件,可使用命令:#cat /proc/meminfo 进行详细查看。
(2)没有运行很多程序,为何used感觉特别大,剩下的free那么少?Linux系统为了要加速系统效能,所以会将最常使用到的或者是最近使用到的程序数据缓存(cache)下来,这样未来系统要程序数据时,就直接由cache中搜寻取出,而不需要重新读取硬盘,速度上当然就加快了!因此,used很大是正常的喔!
(3)手工释放内存缓存:
Linux系统的缓存机制是相当先进的,他会针对dentry(用于VFS,加速文件路径名到inode的转换)、Buffer Cache(针对磁盘块的读写)和Page Cache(针对文件inode的读写)进行缓存操作。但是在进行了大量文件操作之后,缓存会把内存资源基本用光。所以有必要了解一下如何释放缓存。
要达到释放缓存的目的,我们首先需要了解下关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:
0 – 不释放
1 – 释放页缓存
2 – 释放dentries和inodes
3 – 释放所有缓存
接下来进行具体操作:
1. 使用sync指令,将所有未写的系统缓冲区同步写到磁盘中,包含已修改的 i-node、已延迟的块 I/O
和读写映射文件。否则在释放缓存的过程中,可能会丢失未保存的文件。
#sync
2. 将需要的参数写进/proc/sys/vm/drop_caches文件中,比如我们需要释放所有缓存,就输入下面的命令:
#echo 3
> /proc/sys/vm/drop_caches
此指令输入后会立即生效,可以查询现在的可用内存明显的变多了。
要查询当前缓存释放的参数,可以输入下面的指令:
#cat /proc/sys/vm/drop_caches
参考资料:
1、《鸟哥的Linux私房菜》