Ubuntu上Golang编译出现内存不足怎么办
在Ubuntu上使用Golang编译遇到内存不足时,可增加交换空间以扩展虚拟内存,利用GODEBUG限制编译内存,关闭无用后台进程释放资源,调整ulimit虚拟内存上限,或升级硬件增加物理内存,均可有效解决,建议优先尝试软件调整方案。
在Ubuntu上用Golang编译时撞上OOM,确实挺让人头疼的。好在社区里已经积累了不少行之有效的解决办法,下面逐一拆解。

-
给系统加点“后援”——增加交换空间
交换空间(Swap)本质上是磁盘里划出的一块区域,物理内存不够时操作系统会把暂时不用的数据挪过去。操作很简单,先创建一个交换文件,比如分配2GB:
sudo fallocate -l 2G /swapfile sudo chmod 600 /swapfile sudo mkswap /swapfile sudo swapon /swapfile大小可以根据实际需要调整。想让交换空间重启后依然生效,把下面这行加到
/etc/fstab里:/swapfile none swap sw 0 0 -
给编译过程“节流”——限制内存使用
Golang编译器本身可以通过
GODEBUG环境变量来调节内存消耗。比如下面这行命令会把内存使用控制在1GB左右:GODEBUG=gctrace=1,GOMAXPROCS=1,GODEBUG=madvdontneed=1 GODEBUG=madvnotneeded=1 go build -o myapp注意,这样一搞编译速度可能会变慢——毕竟是拿时间换空间了。
-
清场——关掉不用的服务和程序
编译前用
systemctl把那些占内存的后台服务停掉,或者直接用kill干掉不必要的进程。释放出来的几GB往往就能让编译顺利跑完。 -
检查“家底”——系统资源限制
很多Linux发行版默认会对单进程的内存使用有所限制。先拿
ulimit -v看一眼当前的虚拟内存上限:ulimit -v如果数值太小,临时调高它,比如设成4GB:
ulimit -v 4194304不过这招只对当前终端会话有效。想永久生效就得编辑
/etc/security/limits.conf文件了。 -
终极方案——升级硬件
如果上面几步都试过了还是扛不住,那就得认真考虑给机器加点物理内存,或者换块读写更快的固态硬盘。硬件上去了,编译速度和内存压力自然一并解决。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。
Photoshop 2026 是 Adobe 推出的专业图像处理与视觉设计软件,支持 Windows、macOS 和 iPad 等平台,广泛应用于摄影修图、电商设计、平面海报、数字绘画及视觉合成等创作场景。
Blender 是一款免费开源、跨平台的专业 3D 创作软件,集建模、动画、渲染、视频编辑与视觉合成等功能于一体,广泛应用于影视动画、游戏设计和建筑可视化等领域。软件支持 Cycles 物理渲染器与 Eevee 实时渲染引擎,并提供多边形建模、骨骼绑定、物理模拟等专业工具。Blender 兼容 Windows、macOS 和 Linux 系统,安装包轻巧、运行流畅,依托活跃的全球开发者社区持续更新,是从初学者到专业创作者都值得选择的正版 3D 创作工具。















