为什么VS Code需要这么多内存?如何使其运行更加高效?

132

有没有人知道如何让VS Code使用更少的内存?

有时候打开8个文件,它就要占用2GB甚至3GB以上的内存。

在此输入图片描述


1
好的,它是建立在网络浏览器之上的编辑器。仅仅因为一些绝对聪明的头脑,它才能够存在。然而,你必须有一些模块或扩展程序失控了。例如,截图显示Intelephense正在索引 - 这应该只需要几秒钟(不知道编辑器运行了多长时间)。 - Álvaro González
@Adriel,你的 VSC 安装占用了多少空间? - Trunk
@Trunk...我如何可靠地找到那个信息?在C:\Users\adrie\AppData\Local\Programs\Microsoft VS Code中,它显示磁盘大小为225 MB(236.912.640字节) - Adriel Werlich
@Adriel:是的 - 如果没有接受任何插件的话。左侧窄面板上的漂亮切换按钮也很不错。希望Sublime Text也有类似的功能。不过,启用Emmet需要一些麻烦 - 这应该可以直接使用。 - Trunk
这没什么。当我打开一个C++项目时,VS Code会占用15GB的内存。我不得不在我的16GB笔记本电脑上使用交换文件。 - facetus
显示剩余3条评论
6个回答

172

我是VS Code团队的一员。

存在许多可能导致高内存使用的原因。我们提供了工具和指南,可以帮助您调查潜在的性能问题。

首先使用进程资源管理器。进程资源管理器显示每个VS Code子进程的CPU和内存使用情况。使用打开进程资源管理器命令打开它。进程资源管理器应该有助于您追踪使用最多内存的进程。通常情况下,扩展将成为根本原因。

输入图像描述

此外,即使您只打开了八个文件,您的工作区似乎比这八个文件还要大得多。提供智能感知和其他高级编辑器功能通常也需要处理许多未打开的文件。是否有必要使用2-3gb难以确定,除非了解您使用的扩展以及您的工作区包含什么。

我建议您也查看我们的性能问题指南。它解释了如何报告性能问题并进一步调查性能问题。


2
是的@MattBierner,谢谢您的回复。我已经尝试禁用一些扩展并关闭工作区中打开的一些文件,但即使内存使用率仍然相当高...我将尝试遵循您在此处列出的一些指南,稍后我会给出反馈... - Adriel Werlich
1
你好。我的实例也消耗了很多内存。其中最多的是“gpu-process”(近500-550 MB),但我用它来开发Angular应用程序。 gpu-process消耗这么多内存是否正常?我的屏幕分辨率为2736x1824。 - Vlad
15
链接的“性能指南”未涉及内存问题,似乎默认所有VSCode性能问题都是CPU问题。请问您需要翻译成其它语言吗? - Slack Flag
3
嗨,@Matt,我只是好奇微软为什么选择使用JS来开发VS Code? - logdev
1
@SyedSouban 看起来微软不喜欢使用 POSIX 系统调用,他们更喜欢使用 Windows SDK。因此,他们没有为 Linux 开发 Visual Studio。 - Akib Azmain Turja
2
一个文件打开窗口总是占用超过200兆字节的内存,我真的不明白为什么。 - Clock ZHONG

50

你可以通过将以下代码添加到你的 JSON 设置文件中,防止 vscode 监视项目中具有大量文件的文件夹。

"files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/node_modules/**": true
} 

我发现这两个条目已经默认添加了。然而,我使用的一些扩展程序可能存在问题,它可能会忽略这些设置并扫描整个项目,产生不良影响。 - FindOutIslamNow
1
我的VSCode在一个有很多Go包和内核源代码文件夹的工作区中使用了2.5G的内存。添加了这个配置后,它的内存使用量降至300MB。谢谢。 - Thiago Ruiz
我禁用了所有的扩展,但即使在一个小测试项目中,vs code仍然使用超过2GB的内存。将files.watcherExclude添加到用户设置中立即将内存使用量降至400MB。它们已经默认启用,但不知何故被忽略了。作为一个测试,我后来删除了这个设置,但vs code仍然遵循默认设置并保持低内存使用率。我仍然不知道发生了什么... - user3658510
1
编辑:问题来自于默认的 js/ts 语言扩展使用了所有的内存。不幸的是,我仍然没有找到解决这个问题的方法。 - user3658510

39

这是因为VS Code不像Vim、Emacs或者Sublime一样是本地程序。打开VS Code就像打开另一个Chrome窗口,会占用大量的内存和CPU。

即使没有文件被打开,VS Code也会使用700MB的内存,而Neovim在使用一些插件的情况下只使用约10MB的内存。


这并不会造成任何问题,相反,你安装的扩展可能会导致不良影响。 - FindOutIslamNow
我同意,在GVIM上使用相同级别的插件,我可以拥有比VS Code更好的自由空间,只是有时候在C#代码中,为了自动导入某些内容,Vim缺少一些功能,有时候因此我不得不来回切换。 - Benyamin Limanto

31

由于VSCode是基于Electron构建的,因此在内部它与Web浏览器完全相同。 如果您需要更轻量级的内存使用,请改用Sublime Text或Notepad++。


9
没错,Web并不适合桌面应用程序开发。 - Alex Jones
3
有人可以解释一下这些踩的原因吗?Electron 不是已经集成了 Chromium 和 Node.js 吗? - Prid
2
这些天,Electron(其中包括Chromium和Node.js)并不比本地应用程序重得多。仍然有一些人认为它们是巨大的内存吸血鬼,但事实并非如此。 - Finn Shadow
21
@FinnShadow,请你引用一些来源或基准测试来证明最新版本的Electron应用程序和原生应用程序的性能相同。在我的电脑上,Notepad++打开20个文件时只使用12MB,而Visual Studio Code打开4个文件并安装了3个扩展程序后,却使用了120MB。请提供相关资料。 - Prid
1
这并不会造成任何问题,相反,你安装的扩展可能会导致不良影响。 - FindOutIslamNow
显示剩余6条评论

5

检查你的扩展是否导致问题

我使用了https://github.com/Microsoft/vscode/wiki/Performance-Issues#profile-the-running-extensions指南

来解决VS Code启动非常缓慢、占用大量内存(3-4 GB)等问题。

您可以创建CPU剖面,并在问题中与扩展作者或我们共享它。创建CPU剖面的方法如下:

  • 关闭所有VSCode实例,然后使用code --inspect-extensions=9993或任何其他端口号启动。
  • 执行“Developer: Show Running Extensions”命令。该命令将打开一个编辑器,其中显示所有正在运行的扩展程序。要开始记录剖面,请

我发现一些扩展有很高的延迟,并且它们被标记为unresponsive黄色三角形。我使用右键上下文菜单禁用了它们,重新启动了VS Code,之后:

  • 启动只需几秒钟
  • 仅占用约250MB内存

4

这并不是一个实际的解决方案,但通过code ./ --disable-extensions启动VSC可以不需要手动禁用所有扩展程序。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接