内存是计算机不可或缺的一部分,不论是Window还是Linux,内存占用过高,计算机就会慢下来,因此我们需要知道当前内存使用情况,从而更好地控制计算机,那么在Linux我们如何查看我们的内存?

free命令

在Linux下,我们可以通过free查看内存情况,尝试下

[root@git ~]# free
             total       used       free     shared    buffers     cached
Mem:      16027252   13337732    2689520     129840    1069464    8293852
-/+ buffers/cache:    3974416   12052836 
Swap:      8085500          4    8085496 

PS: 通过上述Mem、total、used、free,于是我们就得出该计算机内存16G、已使用13.3G、剩余2.6G,可实际这里面有很多猫腻,buffers、cached呢?我只跑了gitlab,怎么会使用13G内存?

现在我们来详细地介绍这些含义,1、2表示第一二行

  • total1:表示物理 内存总量
  • used1:表示总计分配给缓存(包含buffers 与cache )使用的数量,但其中可能部分缓存并未实际使用
  • free1:未被分配的内存
  • shared1:共享内存,一般系统不会用到,这里也不讨论
  • buffers1: 系统分配但未被使用的buffers 数量(内存到磁盘的缓存)
  • cached1:系统分配但未被使用的cache 数量(cpu到内存的缓存)
  • used2:实际使用的buffers 与cache 总量,也是实际使用的内存总量
  • free2:未被 使用的buffers 与cache 和未被分配的内存之和,这就是系统当前实际可用内存

  • 总内存 = used1 + free1 = used2 + free2
  • 理论上总使用内存 = buffers1 + cached1 + used2
  • 总剩余内存 = buffers1 + cached1 + used2
  • 实际使用内存 = used2

需要理解buffers和cached都是可以使用的内存

例子

free、top输出的单位是kb,如果需要看到更直观的值,可以使用free -h

[root@git ~]# free -h
             total       used       free     shared    buffers     cached
Mem:           15G        12G       2.5G       126M       1.0G       7.9G
-/+ buffers/cache:       3.9G        11G 
Swap:         7.7G         4K       7.7G 

PS: 总内存15G、已使用3.9G,剩余11G,现在我们不会傻傻地认为系统只有2.5G可用内存