在Debian上编译Golang程序时若遇内存不足,可从代码优化、编译配置、系统资源调整三方面解决:
代码层面优化
pprof工具定位内存泄漏或热点。sync.Pool复用对象,减少内存分配。map替代slice查找),避免小对象频繁分配。make预估容量),减少动态扩容开销。编译配置优化
-ldflags="-s -w"去除调试信息,减小编译后文件体积。-parallel(Go 1.10+)加快编译速度。系统资源调整
sudo fallocate -l 2G /swapfile  
sudo chmod 600 /swapfile  
sudo mkswap /swapfile  
sudo swapon /swapfile  
/etc/fstab。sudo systemctl stop <非必需服务名>  
vm.swappiness)控制内存交换倾向。其他技巧
GOGC环境变量(默认100,可降低至50减少GC频率,但可能增加内存占用)。go build -modvendor将依赖放入vendor目录,减少依赖解析开销。参考来源: