free -mt
total used free shared buffers cached
Mem: 16084 11115 4968 0 40 7311
-/+ buffers/cache: 3764 12320
Swap: 0 0 0
Total: 16084 11115 4968
free是显示的当前内存的使用,-m表示以兆为单位显示。-t表示:The -t switch displays a line containing the totals.
第一部分Mem行:
total 内存总数: 16804 M
used 已经使用的内存数: 11115 M
free 空闲的内存数: 4968 M
shared 当前已经废弃不用,总是0
buffers Buffer 缓存内存数: 40 M
cached Page 缓存内存数:7311M
关系:total(16804 M) = used(11115 M) + free(4968 M)
第二部分(-/+ buffers/cache):
(-buffers/cache) used内存数,表示实际被程序占用的内存数:286M (指的第一部分Mem行中的used - buffers - cached)
(+buffers/cache) free内存数,程序仍然可以挪用的内存数: 715M (指的第一部分Mem行中的free + buffers + cached)
第三部分是指交换分区, 我想不讲大家都明白.
我想大家看了上面,还是很晕.第一部分(Mem)与第二部分(-/+ buffers/cache)的结果中有关used和free为什么这么奇怪.
其实我们可以从二个方面来解释.
其中buffers/cache中的内存使用是为了提高程序的性能,而使用的,当新的程序需要内存时,这块缓存的内存仍然可以被使用。
比如使用shell的文件分隔命令时,把一个3GB的大文件按照行数进行分割,每个分割后的文件行数为1kw行:
split -l 10000000 test.txt test
分割后的文件为:testaa,testab,testac...
当使用split进行文件分割前后,我们会看到 free -mt中free的内存数会急剧下降,当我们删掉testa* 文件后,free的内存数就会继续回升。
为了清除混存的cache,可以采用以下命令:
To free pagecache:
echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:
echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:
echo 3 > /proc/sys/vm/drop_caches
当然,往/proc/sys/vm/drop_caches中写入的前提是你得有root权限
参考链接:http://linux.chinaunix.net/techdoc/system/2008/09/11/1031498.shtml