Linux里一般使用free命令查看内存的使用情况,加参数-m表示以Mb为单位来显示内容。这个内容其实是有一些讲究的。如下图:
显示内容分三行N列,第一行表示内存总体的使用情况,第二行表示内存-/+ buffers/cache后的使用情况,第三行表示交换分区的使用情况;各列又显示了内存在每个类别上的使用情况,total列表示总的内存数,used列表示已使用的内存数…诸如此类。
我们需要重点关注的是第二行。
第二行used列中的2564,意思是已使用的内存数-buffers-cache后的内存,(即每一行中的used-buffers-cache)
第二行free列中的1388,表示可用内存数+buffers+cache后的内存,(即第一行中的free+buffers+cache)
所以,服务器实际使用的内存是2564M,还没有被使用的内存为1388M!
为什么这么说?我们知道buffer和cache是linux中的缓存技术,这两种缓存有什么区别,我也不是很清楚,只要知道它们都是用来做缓存使用的就可以了。第一行中各列的内存数,是系统反映出来的,而对于系统来说,buffer和cache都是已经分配出去的内存,所以属于used(已经使用);第二行中各列的内存则不然,它们是-/+ buffer/cache后的内存数,对于程序而言,buffer和cache都是可以使用的内存,因为它们原来就是设计成预先分配的用以提高性能的内存,所以它们都是可用的即free。
所以,第一行的used-buffer-cache,得出第二行used列中的数字,它才是程序实际使用的内存;而第一行的free+buffer+cache,得出第二行free列中的数字,它是程序可以使用的内存。