[root@izm5efwaqhukrqgsmh2vw4z 25680]# free
total used free shared buff/cache available
Mem: 8010196 2882820 2434428 544 2692948 4816648
Swap: 0 0 0
可以看到,free输出的是一个表格,其中的数值都默认以字节为单位。表格总共有两行六列,
这两行 分别是 物理内存 mem 和 交换分区 swap的使用 情况, 而 六列中,每列数据的含义分别为:
total : 总内存大小
used : 是已使用内存的大小,包含了共享内存
free : 是未使用内存的大小
shared : 共享内存的大小
buff / cache : 缓存和缓冲区的大小
available : 新进程 可用内存的大小,available 不仅包含未使用内存,还包括了可回收的缓存,所以一般会比未使用内存更大。不过,并不是所有缓存都可以回收,因为有些缓存可能正在使用
不过,我们知道,free 显示的是整个系统的内存使用 情况。如果你想查看进程的内存使用情况,可以使用 top 或者 ps等工具
[root@izm5efwaqhukrqgsmh2vw4z proc]# top
top - 17:09:17 up 95 days, 57 min, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 89 total, 1 running, 88 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 8010196 total, 2430800 free, 2884756 used, 2694640 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 4814616 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 51592 2668 1368 S 0.0 0.0 3:14.89 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.05 kthreadd
其中
VIRT 是 进程 虚拟内存的大小,只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内。
RES 是常驻内存的大小,也就是进程实际使用的物理内存大小,但不包括swap和共享内存
SHR 是共享 内存的大小,比如与其他进程共同使用的共享内存,加载动态链接库以及程度的代码段等
%MEM 是进程使用物理内存占系统总内存的百分比
虚拟内存:
linux 内核 给 每个进程 都提供了一个独立的虚拟地址空间,并且这个地址空间是连续的。通常
比物理内存打得多,进程都基于这个虚拟内存,在进程运行时动态的将虚拟内存地址映射到实际物理
内存,也就是 内存映射