如何在Linux中查看系统的物理内存总量 Linux精准查询内存大小的方法

2026-05-23电脑数码121898

free -h 的 Mem: 行 total 值即为最准的物理内存总量,是内核上报的运行时实际可用容量,已剔除显存、固件等保留内存;/proc/meminfo 需手动换算且含未启用区域,dmidecode 仅反映插槽硬件信息而非系统识别量。

free -h 是最快、最可靠的查物理内存总量的方法,输出中的 Mem:total 值即为实际可用的物理内存容量。别信 /proc/meminfo 里没换算的 KB 数,也别依赖 dmidecode ——它可能显示插槽容量而非系统识别量。

free -h 看 total 字段最准

这是内核直接上报的运行时物理内存总量,已剔除保留内存(如显存、固件占用),反映真实可用基础。注意三点:

  • free -hMem:total 是最终答案,比如 15Gi 就是约 16GB 物理内存
  • 不要看 availablefree ——它们是剩余可用量,不是总量
  • 如果看到 total 明显小于你预期(如标称 32G 却只显示 31.2G),大概率是 BIOS 预留或集成显卡占用了部分内存

/proc/meminfo 的 MemTotal 要手动换算

该值虽权威,但单位是 KB,且未过滤所有保留区,容易误判:

  • 执行 grep MemTotal /proc/meminfo 得到类似 MemTotal: 32941268 kB
  • 需手动除以 1024² ≈ 31.4 GiB;除以 1000² ≈ 32.9 GB ——混用单位会差出近 1.5GB
  • 某些 ARM 或嵌入式平台该值可能包含未启用的内存区域,free 已做裁剪,更贴近实际

dmidecode 显示的是硬件插槽信息,不是系统识别量

它读取 SMBIOS 表,告诉你“插了什么”,但不保证“系统用了多少”:

Docker Desktop(linux)

当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。

下载

  • 需要 sudo 权限:sudo dmidecode -t memory | grep -E "Size|Type"
  • 可能显示 Size: 16 GB × 2,但若其中一根接触不良或 BIOS 关闭了某通道,free 仍只报 16GB
  • 在虚拟机中常返回 No SMBIOS nor DMI entry point found,此时完全不可用

为什么不用 lshw 或 lsmem?

它们看似全面,但引入额外抽象层,反而增加歧义:

  • lshw -class memory 输出冗长,size 字段有时指单条容量,有时指总和,且默认不显示单位
  • lsmem 主要面向内存块(memory block)管理,常见于大页/热插拔场景,在普通服务器上字段意义模糊
  • 两者都依赖 udev/dbus,容器环境或最小化系统常缺失,而 free 是 procps-ng 核心工具,几乎无依赖

真正要确认“物理内存总量”,盯死 free -hMem:total。其他命令只适合交叉验证或排查硬件配置异常——比如 free 报 16G,dmidecode 却显示两根 16G 条,那基本能断定有一根没被识别。

《如何在Linux中查看系统的物理内存总量 Linux精准查询内存大小的方法.doc》

下载本文的Word格式文档,以方便收藏与打印。