Ubuntu 16.04.3 LTS下free命令显示内存小于实际4GB问题求助
解决Ubuntu 16.04下物理内存识别不全的问题
你遇到的情况很典型——BIOS和硬件检测工具lshw能正确识别4GB物理内存,但free命令只显示2610MB可用,大概率是内存被集成显卡占用或者系统启动参数限制了内存使用,下面是具体的排查和解决步骤:
先确认你的当前输出信息
free -m 输出:
vmalep@X1:~$ free -m total used free shared buff/cache available Mem: 2610 1525 108 243 976 649
sudo lshw -c memory 输出:
*-memory description: System Memory physical id: 7 slot: System board or motherboard size: 4GiB *-bank:0 description: Chip DDR3 Synchronous 1333 MHz (0,8 ns) product: HMT42556MFR6A-G7 vendor: Hynix/Hyundai physical id: 0 serial: None slot: ChannelA size: 2GiB width: 64 bits clock: 1333MHz (0.8ns) *-bank:1 description: Chip DDR3 Synchronous 1333 MHz (0,8 ns) product: HMT42556MFR6A-G7 vendor: Hynix/Hyundai physical id: 1 serial: None slot: ChannelB size: 2GiB width: 64 bits clock: 1333MHz (0.8ns)
排查与解决步骤
1. 检查BIOS中的内存分配设置
Lenovo X1 Carbon的集成显卡(Intel HD系列)会共享系统内存作为显存,可能是BIOS里分配了过多内存给显卡:
- 重启电脑,按F1进入BIOS设置界面
- 找到Display或Graphics相关选项,查看Shared Memory或Video Memory的分配值
- 如果分配了1.4GB左右(4GB-2.6GB≈1.4GB),可以适当调低这个值(比如设为512MB),保存设置后重启系统,再用
free -m查看内存是否恢复
2. 检查内核启动参数是否限制了内存
有时候系统启动时的内核参数会强制限制可用内存:
- 打开终端,编辑GRUB配置文件:
sudo nano /etc/default/grub - 找到
GRUB_CMDLINE_LINUX这一行,检查是否有类似mem=2610M的限制参数 - 如果有,删除该参数,保存文件后更新GRUB:
sudo update-grub - 重启系统后再次检查内存情况
3. 确认集成显卡的显存占用
如果BIOS里的显存分配是默认值,你可以查看当前显卡实际占用的显存:
- 安装Intel显卡工具(Ubuntu 16.04需要添加PPA):
sudo add-apt-repository ppa:intel-gpu-tools/ppa sudo apt update sudo apt install intel-gpu-tools - 运行工具查看显存使用:
sudo intel_gpu_top - 在输出中查看
Video或Render部分的内存占用,确认是否和缺失的内存量匹配
4. 硬件排查(可选)
虽然lshw能识别内存,但如果以上步骤都无效,可以尝试:
- 关机后拔掉电源,重新插拔两根内存,确保内存插槽接触良好
- 单独测试每一根内存,确认单根内存都能被系统正常识别
内容的提问来源于stack exchange,提问作者vmalep




