free内存参数介绍

发布时间 2023-12-11 11:34:10作者: 一个毛线球

第一部分Mem行:

image

image

image

total 内存总数: 15.7G
used 已经使用的内存数: 15.6G
free 空闲的内存数: 93M
shared 当前已经废弃不用,总是0
buffers Buffer 缓存内存数: 298M
cached Page 缓存内存数:14G

对操作系统来讲是Mem的参数,buffers/cached 都是属于被使用,所以它认为free只有93M
我们通过free命令查看机器空闲内存时,会发现free的值很小。这主要是因为,在Linux系统中有这么一种思想,内存不用白不用,因此它尽可能的cache和buffer一些数据,以方便下次使用。但实际上这些内存也是可以立刻拿来使用的。

第二部分(-/+ buffers/cache):

(-buffers/cache) used内存数:1.2G (指的第一部分Mem行中的used – buffers – cached)
(+buffers/cache) free内存数: 14.4G (指的第一部分Mem行中的free + buffers + cached)

可见-buffers/cache反映的是被程序实实在在吃掉的内存,而+buffers/cache反映的是可以挪用的内存总数
对应用程序来讲是(-/+ buffers/cach).buffers/cached 是等同可用的,因为buffer/cached是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。

  • 使用top 查看内存的占用情况,然后键入"M"命令根据内存的占用情况降序排列("P"是CPU占用情况降序排列)

  • 关闭掉不需要的进程,

  • 再使用top查看内存占用情况,发觉内存占用率已经降下来了,但是free -hm却还有100G被占用(内存总共128G),vmstat发现是cache 占用了大量内存。

  • 使用 echo 1 > /proc/sys/vm/drop_caches 释放缓存

常用的释放缓存的命令如下:

To free pagecache:仅清除页面缓存(PageCache)
echo 1 > /proc/sys/vm/drop_caches
To free dentries and inodes:清除目录项和inode
echo 2 > /proc/sys/vm/drop_caches
To free pagecache, dentries and inodes:清除页面缓存,目录项和inode
echo 3 > /proc/sys/vm/drop_caches