查看内存的常用工具
一、可以查看系统内存的工具有:free、top、htop、vmstat、ps aux、cat /proc/meminfo
优点 | 缺点 | |
---|---|---|
free | 简单易用,提供了系统整体内存使用情况的概况 | 缺乏进程级别的详细信息,不能实时监控 |
top | 提供了实时的进程级别的资源占用情况,包括内存、CPU 等 | 界面较为简陋,不够直观;不能进行历史数据的统计和分析 |
htop | 提供了类似 top 的功能,但界面更友好,支持鼠标操作和更多交互式功能 | 相比 top,可能稍微占用更多系统资源 |
vmstat | 提供了系统整体的虚拟内存统计信息,包括内存、交换空间、IO 等 | 输出格式相对较为简单,不能直接查看进程级别的信息 |
ps aux | 提供了当前系统进程的详细信息,包括内存占用情况 | 不是专门用来查看内存信息的命令,需要结合其他命令来获取完整的内存使用情况 |
cat /proc/meminfo | 直接读取内核内存信息,提供了系统整体的内存信息,包括物理内存和虚拟内存 | 输出内容较为庞大,需要用户自行解读 |
二、常用命令free与top介绍:
-
free:显示的是整个系统的内存使用情况
# 注意不同版本的free输出可能会有所不同 $ free total used free shared buff/cache available Mem: 8169348 263524 6875352 668 1030472 7611064 Swap: 0 0 0
-
这两行分别是物理内存 Mem 和交换分区 Swap 的使用情况;
-
第一列,total 是总内存大小;
-
第二列,used 是已使用内存的大小,包含了共享内存;
-
第三列,free 是未使用内存的大小;
-
第四列,shared 是共享内存的大小;
-
第五列,buff/cache 是缓存和缓冲区的大小;
-
最后一列,available 是新进程可用内存的大小;available 不仅包含未使用内存,还包括了可回收的缓存,所以一般会比未使用内存更大。不过,并不是所有缓存都可以回收,因为有些缓存可能正在使用中。
-
-
Top:提供了实时的进程级别的资源占用情况
# 按下M切换到内存排序 $ top ... KiB Mem : 8169348 total, 6871440 free, 267096 used, 1030812 buff/cache KiB Swap: 0 total, 0 free, 0 used. 7607492 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 430 root 19 -1 122360 35588 23748 S 0.0 0.4 0:32.17 systemd-journal 1075 root 20 0 771860 22744 11368 S 0.0 0.3 0:38.89 snapd 1048 root 20 0 170904 17292 9488 S 0.0 0.2 0:00.24 networkd-dispat 1 root 20 0 78020 9156 6644 S 0.0 0.1 0:22.92 systemd 12376 azure 20 0 76632 7456 6420 S 0.0 0.1 0:00.01 systemd 12374 root 20 0 107984 7312 6304 S 0.0 0.1 0:00.00 sshd ...
-
顶端,也显示了系统整体的内存使用情况;
-
VIRT 是进程虚拟内存的大小,只要是进程申请过的内存,即便还没有真正分配物理内存,也会计算在内;
-
RES 是常驻内存的大小,也就是进程实际使用的物理内存大小,但不包括 Swap 和共享内存;
-
SHR 是共享内存的大小,比如与其他进程共同使用的共享内存、加载的动态链接库以及程序的代码段等;
-
%MEM 是进程使用物理内存占系统总内存的百分比
-