为什么vscode需要那么多内存?如何使其更干净?

Adr*_*ich 24 visual-studio-code

有谁知道如何使vscode使用更少的内存?

要打开大约8个文件,需要2GB以上的内存,有时需要3GB以上的内存

在此处输入图片说明

Mat*_*ner 28

我在VS代码团队中。

有许多可能的原因导致内存使用率很高。我们将工具和指南放在一起,可以帮助您调查潜在的性能问题。

首先使用流程浏览器。进程浏览器显示VS Code的每个子进程的cpu和内存使用情况。使用Open process explorer命令将其打开。进程浏览器应帮助您跟踪哪些进程使用的内存最多。通常,扩展名可能是根本原因

在此处输入图片说明

另外,即使您只打开了八个文件,您的工作区似乎也比仅八个文件大很多。提供智能感知和其他高级编辑器功能通常也需要处理许多未打开的文件。如果不了解您正在使用的扩展名和工作空间中包含的扩展名,很难说2-3gb是否合理。

我建议您也浏览一下我们的其他性能问题指南。它说明了如何报告性能问题并进一步调查性能问题。

  • @mattbierner 链接的“性能指南”根本没有解决内存问题。似乎假设所有 VSCode 性能问题都是 CPU 问题。 (5认同)
  • 一个文件打开窗口总是占用200Mbytes以上的内存,我实在不明白为什么。 (3认同)
  • 是的@MattBierner,感谢您的回复。我尝试禁用一些扩展并关闭一些在工作区中打开的文件,但即使内存使用量仍然很高...我将尝试遵循您在此处追踪的一些准则,稍后我来反馈一下... (2认同)
  • 嗨@Matt,我只是好奇为什么 MS 选择 JS 来开发代码? (2认同)

小智 25

这是因为 VS Code 不是像 Vim、Emacs 甚至 Sublime 那样的原生程序。打开 VS Code 就像打开另一个 Chrome 窗口,它使用大量 RAM 和 CPU。

Neovim 使用大约 10 mbs 的 RAM(带有一些插件),而 vs code 使用 700 mbs 的 RAM,没有打开文件


Pro*_*cuk 17

因为 VSCode 是建立在 Electron 之上的,所以在底层它与 Web 浏览器是一样的。如果您需要更轻的内存,请改用 Sublime Text 或 Notepad++

  • @FinnShadow 您能否引用最新版本电子应用程序与本机应用程序性能相同的一些来源或基准测试?Notepad++ 在我的计算机上使用 12MB 打开 20 个文件,而 Visual Studio Code 使用 120MB 打开 4 个文件并安装 3 个扩展。 (11认同)
  • 是的,Web 不是为桌面应用程序开发而设计的 (6认同)
  • 有人可以解释一下反对票吗?Electron 不包含 Chromium 和 Node.js 吗? (3认同)
  • @Prid 如今,Electron(包括 Chromium 和 Node.js)并不比原生应用程序重多少。仍然有一些人相信它们是巨大的吸食公羊的怪物,但事实并非如此。 (2认同)

Cen*_*ael 7

通过将其添加到json设置文件中,可以防止vscode监视项目中包含很多文件的文件夹

"files.watcherExclude": {
    "**/.git/objects/**": true,
    "**/node_modules/**": true
} 
Run Code Online (Sandbox Code Playgroud)


Fin*_*Now 6

检查您的扩展是否导致了不好的事情

我已经使用了指南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 的内存


ros*_*net 5

这不是一个实际的解决方案,但通过启动 VSCcode ./ --disable-extensions可以做到这一点,而不需要手动禁用所有这些。