我目前常用的笔记本有 8GB 的物理内存,之前没发现过内存资源存在异常的情况。但是,今天打开任务管理器发现,可用内存只剩 6.1 GB 了,减少了大约 2GB, 如图 01 所示:
在“设置”中查看设备规格,同样可以发现,可用内存减少了大约 2GB, 变成了 6.07GB, 如图 02 所示:
使用 “Win+R” 快捷键打开“运行”窗口,输入 DXDIAG
或 dxdiag
命令打开 Windows 10 自带的 DirectX 诊断工具,对当前计算机的硬件信息进行检测。在 DirectX 诊断工具的“系统”选项卡中,我们可以看到,当前计算机中有 8192MB 的物理内存(8192MB 除以 1024 正好等于 8GB),这说明物理内存没有损坏,如图 03 所示:
既然硬件没有问题,就只能是软件上的问题了。于是,我回头重新查看任务管理器中关于内存的相关信息,发现有 1.9GB 的内存是“为硬件保留的内存”,而 1.9GB 加上 6.1GB 刚好等于 8GB, 如图 04 所示:
那么,“为硬件保留的内存”是什么意思,又是做什么用途的呢?
其实,“为硬件保留的内存”就是为 BIOS 及相关输入输出设备的驱动程序保留的“专用内存”——所谓“专用”就是指,即使这部分“专用内存”当前没有被对应的硬件使用,也不会分配给其他程序使用。
在微软官网的技术支持页面,搜索“为硬件保留的内存”可以找到一篇名为“基于 Windows 7 的计算机的可用内存可能低于安装内存”的文章,虽然这篇技术支持文章是基于 Windows 7 写的,但应用在 Windows 10 上也没有问题。
根据这篇技术支持文章,可用内存远少于物理内存的原因至少有以下几种:
- 安装的系统版本问题,例如,在理论状态下,32 位的 Windows 系统最大只支持 4GB 的内存;
- BIOS 的版本过低或者设置存在问题;
- 内存芯片存在物理上的损坏;
- 为硬件保留的内存过大。
结合我的这台电脑的实际情况进行分析,可知:
- 当前计算机上使用的操作系统是 64 位的 Windows 10, 系统版本不存在问题;
- BIOS 设置最近也没做过更改(BIOS 前段时间刚刚更新过,版本也不会很低);
- 根据前面的检测结果,物理内存损坏的可能性同样很低。
注:
[1]. 32 位的操作系统,在理论上支持最大为 $2^{32}$ 字节的内存,换算成 GB 就是 4GB;
[2]. 64 位的操作系统,在理论上支持最大为 $2^{64}$ 字节的内存,换算成 GB 就是 $2^{34}$ GB(即 17179869184GB 或者说 16777216TB);
[3]. “32 位”和“64 位”中的“位”指的是“位宽”,而不是“bit 位”。
综合可知,只有“为硬件保留的内存过大”这一种可能性了。
调整“为硬件保留的内存”需要在“系统配置”工具中进行,使用 “Win+R” 快捷键打开“运行”窗口,输入 msconfig
命令即可打开系统配置窗口。
在系统配置窗口的“引导”选项卡中,点击“高级选项”按钮,如图 05 所示:
点击上述按钮之后就可以打开“引导高级选项”窗口。在该窗口中可以看到,当前计算机启用了系统启动引导过程中使用“最大内存”这一功能。启用该功能会导致系统为 BIOS 及相关输入输出设备的驱动程序保留尽可能充足的内存资源(当然不会把所有物理内存都变成为硬件保留的内存,否则其他程序的可用内存将变为 0, 导致开机之后什么应用程序也运行不了),如图 06 所示:
我们需要【取消勾选】“最大内存”选项,然后点击“确定”按钮,如图 07 所示:
之后,会弹出一个提示框,告诉我们必须重启计算机才可以使刚才做的配置修改生效,如图 08 所示:
我们按照要求重启系统即可(重启前最好手动关闭当前正在运行的应用程序,做好重要数据的保存或备份)。
重启完成之后,进入系统,再次打开资源管理器,可以看到,可用内存和为硬件保留的内存都变成了正常大小,如图 09 所示:
参考资料:
[1]. 基于 Windows 7 的计算机的可用内存可能低于安装内存https://support.microsoft.com/zh-cn/topic/基于-windows-7-的计算机的可用内存可能低于安装内存-3d194dc3-39b9-fae7-74d8-59931b53d2c2