【问题标题】:Multiple instances or processes of visual studio code in task manager for single application window单个应用程序窗口的任务管理器中 Visual Studio 代码的多个实例或进程
【发布时间】:2016-11-26 07:49:42
【问题描述】:

我正在使用 Visual Studio Code。我的机器面临性能问题。我去了任务管理器,发现进程选项卡中有多个Code.exe 实例,尽管我的电脑上只有一个 Visual Studio Code 窗口正在运行/处于活动状态。

我可以看到总共有八个Code.exe 实例。虽然,我可以看到所有八个实例都占用了从几 KB 到最大 55 MB 范围内的 RAM 内存。所以有一点可以肯定,这几个进程并没有一起消耗太多内存,但它们的计数仍然让我一时迷惑。我的理解是一个 Visual Studio Code 窗口应该映射到一个 Code.exe 进程。

我还有一个观察结果。我打开了另一个新的 Visual Studio Code 窗口,看到 Code.exe 进程的数量这次增加了两个而不是一个。当总共有 2 个 Visual Studio Code 窗口当前处于活动状态时,总 Code.exe 进程计数现在自行变为 10。我不确定这里发生了什么。有人可以帮助我了解这是否是在内部实现 Visual Studio Code 的正确行为吗?

【问题讨论】:

    标签: process visual-studio-code process-management


    【解决方案1】:

    此行为是设计使然,并记录在 Github 问题 #5856#8006#20856 中的 cmets 中

    链接中提到的cmets的总结

    这种行为是 vscode 的设计方式和 事实上,它建立在 Chromium/Electron 之上。进程数 从最终用户的角度来看,这并不重要,重要的是数量 每个进程所做的工作以及它们之间的通信 很重要。

    按照设计,我们使用的 UI 框架本身就是多进程的,然后 我们有 1 个扩展进程(每个窗口),一个文件进程 观看(每个窗口)和 1 个搜索过程。我们还有 1 个共享 更新过程。

    使用 Process Explorer 之类的工具,您可以获得有关流程的更多详细信息。 只有一个进程code.exe 的父进程为explorer.exe,这表示生成其他子进程的主进程。以下是使用工具 Process Explorer 显示 Main code.exe 属性的屏幕截图。

    此外,快速浏览每个子code.exe 进程的命令行参数将提供有关每个进程应该做什么的更多有用信息。例如其中一个子进程code.exe 似乎是崩溃的错误报告进程。

    "C:\Program Files (x86)\Microsoft VS Code\Code.exe" --reporter-url=https://ticinocrashreporter.azurewebsites.net/crash --application-name=VSCode "--crashes-directory=..\AppData\Local\Temp\VSCode Crashes" --v=1
    

    【讨论】:

    • 有趣的是,当我在进程资源管理器中查看主code.exe 进程(其他code.exe 进程的父进程)的属性时,它的父进程显示为<Non-existent Process>(5188)。我检查了进程资源管理器和任务管理器,但没有以 PID 5188 运行的资源管理器进程。Windows 是否会发挥一些技巧来使此类explorer.exe 进程对用户隐藏。我可以看到另一个具有不同 PID 3056 的 explorer.exe 进程。窗口是否维护多个/多个 explorer.exe 进程,用于不同目的?
    • 同一个exe可以在不同的用户账户下运行。 Windows 可以在不同的用户帐户下运行多个explorer.exe
    • 多么糟糕的设计!这些应该是线程,而不是完整的 Windows 进程。
    【解决方案2】:

    好吧,我也刚刚在我的任务管理器中发现了这个问题。我的情况是6个实例。以前要多得多,但是当我在 File > Open Recent 中清除了最近的项目列表后,这个数字就降到了 6 个。

    现在6之谜也解开了。任务管理器中的额外实例用于 VS Code 中的“扩展”、“代码编辑器”等窗口/视图。

    您可以通过在任务管理器中逐个杀死其他实例来验证这一点,因为您这样做 VS 代码将开始显示错误并抱怨我们在任务管理器中杀死的实例。

    希望对你有帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2015-04-22
      • 1970-01-01
      • 2018-07-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多