free -m -s2
-m指定以兆为单位显示,-s每多少秒刷新一次
先看下输出(我调整了下格式,让其对齐了):
total used free shared buffers cached
Mem: 7844 7366 477 0 100 902
-/+ buffers/cache: 6363 1480
Swap: 1961 28 1932
第一行:
7844: 机器总内存大小
7366: 已经被OS使用了的内存大小(注意,使用,并非占用)
477: 空闲的内存大小
0: shared,作废,别看了
buffers: 缓冲区大小,比如,缓存打开的文件目录,文件权限等
cached: 缓存大小,比如文件缓存,网络通信的缓存(其实也是文件缓存)等等
第二行:
6363: -buffers/cache,OS实实在在正在使用的 内存大小(OS内核+应用程序),所以这里的开头是减号
1480: + buffers/cache,实实在在还可以使用的内存大小,其值约等于第一行的free + buffers + cache,(自己想想为什么吧)
第三行(熟悉页面交互的应该很清楚):
1961: 用来做页面交换的总的硬盘空间大小
28: 页面交换使用了的大小
1932: 页面交互未使用的磁盘空间大小
结论:
1、要看内存的占有比例,第二行- buffers/cache更有意义,使用率可以这样计算:
- buffers/cache / total
这里是:6363 / 7844 = 81%
2、Swap如果使用率过高,那就说明页面交换非常的频繁,应用的性能就会急剧下降,可能是内存真心不够用,还有就是内存碎片很多,而应用又频繁的申请大的内存块