linux free命令用法以及解释

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

你可能感兴趣的:(linux)