答案1
简短答案
可能只是内核占用了内存。Ubuntu 不会报告内核内存使用情况,而是从总可用内存中减去。这只是为了让您知道在大多数情况下内核内存无法释放。该内存用于绝对必要的事情,因此永远不会可用。
诊断命令
我并不指望您运行所有这些命令,但我将它们包含在这里以供参考和完整性。最相关的是命令 3 和 4。另外请注意,无论单位缩写是什么,所有大小都将以 2 为基数(例如GiB
),而不是以 10 为基数(例如GB
)。
您可以使用以下方法检查您的 RAM 条声称有多大:
sudo dmidecode | grep Size | grep MB
您可以使用以下命令检查可用于一般用途的 RAM 量(查找
Mem
和total
):free -h
您可以使用以下命令估计内核使用了多少内存:
cat /proc/meminfo | grep Slab
您可以使用以下方法检查“被盗”的显卡内存:
dmesg | grep stolen
您可以通过以下方式查找特定的硬件保留内存:
dmesg | grep e820
你可以通过以下方法测试以确保你的所有内存都正常工作运行内存测试
解释
最可能的解释是,额外的空间被您的显卡或内核本身使用。如果您不熟悉,内核是操作系统的最低级部分,它使用的任何内存对您来说都是不可用的,因此不会报告为空闲。内存可能因多种原因而被使用,例如虚拟内存表、内存映射 I/O、内核进程、某些缓存、共享图形内存等。
例如:查看我的笔记本电脑
将命令 3 的输出添加到您的结果中很可能15.3GiB
会产生几乎完全相同的结果16GiB
。在我的系统中就是这种情况:
- 安装的 RAM:
6GiB
- 在系统设置 > 详细信息中报告:
5.6GiB
- 输出
cat /proc/meminfo | grep Slab
:316652 kB
- 转换成
GiB
:316652/2^20 = 0.3GiB
- 输出
dmesg | grep stolen
:32768K
- 转换成
GiB
:32768/2^20 = 0.03GiB
- 将它们加在一起:
5.6 + 0.3 + 0.03 = 5.93GiB
由于Slab
内存并不全面,我们可以假设内核0.07GiB
在我们看不到的地方使用剩余的内存,所以这是一个非常令人满意的结果。