Несколько экземпляров или процессов кода Visual Studio в диспетчере задач для одного окна приложения

Я использую код Visual Studio. Я столкнулся с проблемой производительности на моей машине. Я зашел в диспетчер задач и увидел, что на вкладке процессов есть несколько экземпляров Code.exe, хотя на моем ПК запущено только одно окно Visual Studio Code.

«Несколько

Я вижу, что всего восемь экземпляров Code.exe. Хотя я вижу, что все восемь экземпляров занимают оперативную память в диапазоне от нескольких КБ до максимум 55 МБ. Так что в одном я был уверен, что эти несколько процессов не слишком много памяти съедают вместе, но все же их количество меня на секунду споткнуло. У меня было понимание, что одно окно кода Visual Studio должно отображаться на один процесс Code.exe.

У меня есть еще одно наблюдение. Я открыл еще одно новое окно Visual Studio Code и увидел, что количество процессов Code.exe увеличилось на два, а не на один на этот раз. Общее количество процессов Code.exe теперь само по себе стало 10, когда в настоящее время активны в общей сложности 2 окна кода Visual Studio. Я не уверен, что здесь происходит. Может ли кто-нибудь помочь мне понять, правильно ли это поведение в отношении внутренней реализации кода Visual Studio?


person RBT    schedule 26.11.2016    source источник


Ответы (2)


Такое поведение предусмотрено дизайном и описано в комментариях к проблемам Github #5856, #8006 и #20856

Резюме из комментариев, упомянутых в ссылках

Такое поведение является следствием как того, как был разработан vscode, так и того факта, что он построен на Chromium/Electron. Количество процессов не должно иметь большого значения с точки зрения конечного пользователя, важен объем работы, выполняемой каждым процессом, и взаимодействие между ними.

По дизайну используемая нами структура пользовательского интерфейса сама по себе является многопроцессорной, а затем у нас есть 1 процесс для расширений (для каждого окна), один процесс для просмотра файлов (для каждого окна) и 1 процесс для поиска. У нас также есть 1 общий процесс для обновлений.

Используя такой инструмент, как Process Explorer, вы можете получить более подробную информацию о процессе. Только один из процессов code.exe будет иметь родительский элемент explorer.exe, который обозначает основной процесс, породивший другие дочерние процессы. Ниже приведен снимок экрана, показывающий, как отображаются основные code.exe свойства с помощью инструмента Process Explorer.

введите описание изображения здесь

Кроме того, беглый взгляд на аргументы командной строки для каждого из процессов Children 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
person Abhinav Galodha    schedule 28.03.2017
comment
Интересно, что когда я просмотрел свойства основного процесса code.exe (родителя других процессов code.exe) в проводнике процессов, он показывает его родителя как <Non-existent Process>(5188). Я проверил обозреватель процессов и диспетчер задач, но нет процесса проводника, работающего с PID 5188. Использует ли Windows какой-то трюк, чтобы скрыть такой explorer.exe процесс от пользователя. Я вижу еще один процесс explorer.exe с другим PID 3056. Поддерживает ли окно несколько/несколько процессов explorer.exe, предназначенных для разных целей? - person RBT; 29.03.2017
comment
Один и тот же exe может быть запущен под разными учетными записями пользователей. Windows может иметь несколько explorer.exe, работающих под разными учетными записями пользователей. - person Abhinav Galodha; 29.03.2017

Ну, я тоже только что понял эту проблему в своем диспетчере задач. В моем случае это 6 экземпляров. Раньше было намного больше, но как только я очистил список последних проектов в Файл > Открыть недавние, число сократилось до 6.

Теперь тайна числа 6 также разрешилась. Дополнительные экземпляры в диспетчере задач используются для «Расширений», «Редактора кода» и т. Д., Окна / представления внутри VS Code.

Вы можете убедиться в этом, убив один за другим другие экземпляры в диспетчере задач, поскольку вы делаете это, код VS начнет показывать ошибку и будет жаловаться на экземпляры, которые мы убиваем в диспетчере задач.

Надеюсь, поможет.

person Anmol Saraf    schedule 21.03.2017