GoLand 高频触发 go build 和 go list,导致 $GOCACHE 和 $GOMODCACHE 持续写入并被后台进程(如 gopls)占用,即使删除缓存文件,Linux/macOS 下因文件句柄未释放空间不立即回收,Windows 需重启 GoLand 或终端才能释放;仅删 JetBrains 自身缓存目录无效,因其不存 Go 构建产物。

GoLand 本身不生成构建产物,但会高频触发 go build 和 go list,导致 $GOCACHE 和 $GOMODCACHE 被反复写入——不清它,几天就能吃掉 30GB+ 磁盘空间。
为什么删了 GoLand 缓存目录,磁盘空间还不释放?
因为 GoLand 不直接写缓存,真正占空间的是 Go 工具链的 $GOCACHE(编译中间产物)和 $GOMODCACHE(模块源码),它们默认在用户目录下,且被 IDE 后台进程持续占用:
- Linux/macOS 下已删除的缓存文件若仍被
gopls或后台go list进程打开,磁盘空间不会立刻归还 - Windows 上可能因文件句柄未释放卡住,需重启 GoLand 或终端再清理
- 执行
go clean -cache后没看到空间变化?先运行lsof +D $(go env GOCACHE)(macOS/Linux)或用 Process Explorer 检查是否有进程锁着缓存文件
只删 ~/Library/Caches/JetBrains/GoLand* 不够
这个目录只存 IDE 自身 UI 状态、索引快照、插件缓存,对磁盘压力极小(通常
- 先确认实际路径:
go env GOCACHE(如~/Library/Caches/go-build)和go env GOMODCACHE(如~/go/pkg/mod) - 删 JetBrains 缓存目录只是“卸妆”,删
$GOCACHE和$GOMODCACHE才是“清肠胃” - 别手动
rm -rf ~/go/pkg—— 它包含mod(模块)和sumdb(校验库),误删sumdb会导致后续go get校验失败
推荐清理顺序:先停 IDE,再清 Go 缓存
避免边清理边重建,确保空间真实释放:
GoLand 2026.1.1 是 2026.1 发布后的首个维护修正版本,适合已经开始体验 2026.1 新功能并希望同步补丁的开发者。它更适合用于入门项目、现有项目迁移测试和 IDE 行为验证。
- 退出 GoLand(不是仅关闭窗口,要完全退出进程)
- 运行
go clean -cache清空构建缓存 - 运行
go clean -modcache清空模块缓存(注意:这会清掉所有已下载的依赖源码,下次go build会重下) - 如果用了模糊测试,加一句
go clean -fuzzcache - 最后再删 JetBrains 缓存:
rm -rf ~/Library/Caches/JetBrains/GoLand*(macOS)或对应 Windows/Linux 路径
长期节省空间的关键动作
清理是救急,防复发得改配置:
- 关掉 GoLand 的
Build project automatically(Settings → Go → Build Tags & Vendoring),它每次保存都触发go list,疯狂往$GOCACHE写 - 把
GOCACHE和GOMODCACHE指向大容量盘:go env -w GOCACHE=/D/GoCache、go env -w GOMODCACHE=/D/GoMod(Windows);改完后务必验证go env GOCACHE输出是否更新 - 不建议设
GOCACHE=off,除非是 CI 临时机——本地开发会明显变慢,且go test -race等场景仍需缓存支撑
最易忽略的一点:go clean -modcache 只清当前 GOMODCACHE 路径,如果你之前没改过,它就清 C 盘默认路径;但新设了 GOMODCACHE 后,旧缓存还在原地躺着,得手动删或用 du -sh ~/go/pkg/mod 定期盯一眼。










