Java教程

如何通过free看懂内存的真实使用

本文主要是介绍如何通过free看懂内存的真实使用,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

  free命令是Liunx操作系统中对内存进行查看和监控的一个常用命令。我们可以直接执行free命令获取操作系统内存使用的相关数据,如下所示:

[root@ufdb165 ~]# free
              total        used        free      shared  buff/cache   available
Mem:       63722036     2850012     5629452    16861900    55242572    43486320
Swap:      33554428           0    33554428

  默认直接执行free获取到的内存数据的单位都是k,Mem这一行展示的是物理内存使用情况,Swap这一行展示的是内存交换区(通常也叫虚拟内存)的整体使用情况。

  • tatal列:显示的是系统总的可用物理内存和交换区的大小,单位为k。
  • used列:显示的是已经被使用的物理内存和交换区的大小,单位为k。
  • free列:显示的是还有多少物理内存和交换区没有被使用,单位为k。
  • shared列:显示的是共享区占用的物理内存大小,单位为k。
  • buff/cache列:显示的是被缓冲区和page缓存合计使用的物理内存大小,单位为k。
    • buff:在操作系统中指的是缓冲区,负责磁盘块设备的读写缓冲,会直接占用系统的物理内存。
    • cache:指的是操作系统中的page缓存,这个缓存是Liunx内核实现的磁盘缓存,就是将磁盘中的数据缓存到物理内存中,以减少内核对磁盘I/O的读写操作,这样对磁盘的访问就会变为对物理内存的访问,从而大大提高了系统对磁盘的读写速度。cache类似于应用程序中使用redis来实现缓存一样,其实就是把一些经常需要访问的数据存储到物理内存中来提高数据访问的速度。 
  • available列:显示的是可用物理内存的大小,单位为k。通常情况下,avaliable的值等于free+buff/cacheLiunx内核为了提高磁盘读写的速度会使用一部分物理内存来缓存经常要使用的磁盘数据,所以buff和cache对于Linux操作系统的内核来说,都属于已经被使用的内存,而free列显示的是真正未被使用的物理内存。不过,如果物理内存不够用了并且应用程序恰巧又需要使用物理内存时,内核就会从buff和cache中回收被它们占用的物理内存来满足应用程序的需要,也就是说buff和cache占用的物理内存是可以被内核释放的。

 

这篇关于如何通过free看懂内存的真实使用的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!