在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目錄,減少依賴解析開銷。參考來源: