查物理内存总容量最准的方法是执行 free -h,取 Mem: 行的 total 值(如 15Gi),该值为内核运行时确认的实际可用 RAM,已剔除显存、BIOS/UEFI 预留及固件占用等保留内存,而非硬件标称或 /proc/meminfo 原始值。

查物理内存总容量,直接用 free -h,看输出中 Mem: 行的 total 值。这个数字是内核运行时确认的实际可用 RAM,已扣除显存、BIOS/UEFI 预留、固件占用等保留内存,最贴近真实情况。
怎么看物理内存总量
执行命令:
free -h
输出类似:
Mem: 15Gi 2.1Gi 8.3Gi 144Mi 4.5Gi 11.2Gi Swap: 2.0Gi 0B 2.0Gi
其中 Mem: 行第一个值(15Gi)就是物理内存总容量。它不是硬件插槽标称值,也不是 /proc/meminfo 里原始的 KB 数,而是系统真正识别并能调度的 RAM 大小。
- 如果标称 32GB 却只显示 31.2Gi,大概率是集成显卡或 BIOS 分走了一部分,属正常现象
- 别用
dmidecode -t memory查总量——它只读硬件描述,不反映系统是否启用该内存 - 也别直接拿
/proc/meminfo中的MemTotal除以 1024² 算——单位易混,且未剔除所有保留区
怎么看虚拟内存总容量
虚拟内存 = 物理内存 + 交换空间(swap)。swap 总量就是虚拟内存的“扩展部分”,由 swap 分区或 swap 文件构成。
同样在 free -h 输出中,看 Swap: 行的 total 值(如上例中的 2.0Gi)。
- 若 Swap total 为 0B,说明未配置交换空间,此时虚拟内存上限≈物理内存总量
- swap 可通过
swapon --show或cat /proc/swaps查看启用状态和位置 - 总虚拟内存 ≈ Mem total + Swap total(注意单位统一,比如都换算成 GiB)
为什么不用其他命令
free -h 是最轻量、最可靠的选择:
-
/proc/meminfo字段全但需手动解析和换算,MemTotal和SwapTotal单位都是 kB,容易出错 -
lshw -class memory或lsmem输出冗长,字段含义模糊,容器或最小化系统常不可用 -
top、htop显示的是实时使用状态,不直接给出“总容量”这个静态指标
要快速知道“系统最多能用多少内存”,就盯住 free -h 的两行 total:Mem total 是物理底座,Swap total 是弹性扩展,加起来就是虚拟内存理论上限。


















