前两天 Go Team 发布了 gopls 0.5.0,这个版本最重要的改进是减少了内存占用:重写缓存模型,从而显着提高了内存使用率。具体看看值得一提的一些功能或改进。详细内容见:https://github.com/golang/tools/releases/tag/gopls/v0.5.0。

内存使用

在 issue 中有人反馈,gopls 占用资源特别离谱,我自己也有切身的体会,以至于我都抛弃了 gopls。下图是 #issue36943 中用户的反馈,11GB 内存占用,太恐怖了。

vscode识别不了go命令(VSCode写Go更爽)(1)

我现在使用 gopls 0.5.0,打开 studygolang 项目,内存占用如下:

vscode识别不了go命令(VSCode写Go更爽)(2)

其中多个 gopls 进程,是因为采用了 daemon 模式。这在这篇文章讲解过。

内存占用减少了很多,于是我毫不犹豫的启用了 gopls。

显示 GC 优化细节

这个功能感觉挺不错的。这是实验性的尝试,如果你想试用,在 gopls 节点中增加如下配置:

"gopls":{ "codelens":{ "gc_details":true } }

这时候在打开的 Go 文件顶部会出现 Toggle gc annotation details,单击它将显示 Go 编译器生成的优化诊断,再次单击将隐藏这些诊断。

vscode识别不了go命令(VSCode写Go更爽)(3)

点击启用后,在底部窗口可以看到类似这样的编译器信息:

vscode识别不了go命令(VSCode写Go更爽)(4)

更强的自动完成

这个版本增强了 autocompletion。

这次升级涉及到的 issue 见:https://github.com/golang/go/milestone/138?closed=1。

,