【程序员必备小知识-内存技巧21】详解查看内存使用命令

引言

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动

我们已经了解了内存的分布和分配,相信对内存也有了一些了解,然后我们来进入实战,看看系统使用内存的情况是什么样的?

总体内存使用查看

我们运行free,你可以看到,free 输出的是一个表格,其中的数值都默认以字节为单位。表格总共有两行六列,分别是物理内存 Mem 和交换分区 Swap 的使用情况,如下图所示:

image.png

这6列的具体含义如下:

  1. total :总内存大小,可以看到物理内存和Swap分区;
  2. used 是已使用内存的大小,包含了共享内存;
  3. free 是空闲内存的大小;
  4. shared 是共享内存的大小;
  5. buff/cache 是缓存和缓冲区的大小;
  6. available 是新进程可用内存的大小。

需要注意的是可用内存不仅包含未使用内存还包括可回收内存,所以会比未使用内存更大,并不是所有缓存都能回收,只有未使用的缓存才能回收,使用中的缓存是不能被回收的。

不过,free是反应整体内存的情况,要想查看进程的内存使用情况,就得通过top或者ps命令。

进程内存使用查看

我们使用top命令,看到的是这样一个界面:

image.png

我们来看看内存有关的部分:

  • VIRT 是进程虚拟内存的大小,只要是进程申请过的内存,就计算在内,不管是否真正分配。
  • RES 是常驻内存的大小,也就是进程实际使用的物理内存大小,但不包括 Swap 和共享内存。
  • SHR 是共享内存的大小,比如与其他进程共同使用的共享内存、加载的动态链接库以及程序的代码段等。
  • %MEM 是进程使用物理内存占系统总内存的百分比。

虚拟内存并不会全部分配物理内存,且共享内存 SHR 并不一定是共享的。

猜你喜欢

转载自juejin.im/post/7017418079508529160