商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Ubuntu上Golang编译出现内存不足怎么办

Ubuntu上Golang编译出现内存不足怎么办

  发布于2026-07-16 阅读(0)

扫一扫,手机访问

在Ubuntu上用Golang编译时撞上OOM,确实挺让人头疼的。好在社区里已经积累了不少行之有效的解决办法,下面逐一拆解。

Ubuntu上Golang编译出现内存不足怎么办

  1. 给系统加点“后援”——增加交换空间

    交换空间(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
  2. 给编译过程“节流”——限制内存使用

    Golang编译器本身可以通过GODEBUG环境变量来调节内存消耗。比如下面这行命令会把内存使用控制在1GB左右:

    GODEBUG=gctrace=1,GOMAXPROCS=1,GODEBUG=madvdontneed=1 GODEBUG=madvnotneeded=1 go build -o myapp

    注意,这样一搞编译速度可能会变慢——毕竟是拿时间换空间了。

  3. 清场——关掉不用的服务和程序

    编译前用systemctl把那些占内存的后台服务停掉,或者直接用kill干掉不必要的进程。释放出来的几GB往往就能让编译顺利跑完。

  4. 检查“家底”——系统资源限制

    很多Linux发行版默认会对单进程的内存使用有所限制。先拿ulimit -v看一眼当前的虚拟内存上限:

    ulimit -v

    如果数值太小,临时调高它,比如设成4GB:

    ulimit -v 4194304

    不过这招只对当前终端会话有效。想永久生效就得编辑/etc/security/limits.conf文件了。

  5. 终极方案——升级硬件

    如果上面几步都试过了还是扛不住,那就得认真考虑给机器加点物理内存,或者换块读写更快的固态硬盘。硬件上去了,编译速度和内存压力自然一并解决。

本文转载于:https://www.yisu.com/ask/58881157.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注