VSCode打開時這幾個同樣名稱的進程分別有什麼作用?
好奇...
謝謝 @Belleve @Richard Yu 邀請,這是個非常好的問題。現有的答案都是在說 Chromium 的進程,沒毛病。Electron 使用了 Chromium 的 multi process 機制,不同的 page 運行在不同的 renderer process 中。
樓主的圖片里,有四個進程,難道說 vscode 後台跑了四個tab?我們不妨看看這些進程都是幹什麼的。
假設我們在 macOS/Linux 上,在 VS Code Insiders 運行的時候,在 terminal 里跑個命令
ps aux|grep Insiders
我們會得到以下結果(省去了冗餘的跟本題無關的數據)
.../Contents/MacOS/Electron
.../Code - Insiders Helper --type=gpu-process
.../Code - Insiders Helper --type=renderer .../Electron Framework.framework/Resources/crashpad_handler
.../Code - Insiders Helper --type=renderer
.../Code - Insiders Helper .../app/out/bootstrap --type=extensionHost
.../Code - Insiders Helper .../app/out/bootstrap --type=watcherService
.../Code - Insiders Helper .../app/out/bootstrap --type=searchService
.../Code - Insiders Helper .../extensions/eg2.tslint-0.15.0/node_modules/vscode-languageclient/lib/utils/electronForkStart .../extensions/eg2.tslint-0.15.0/server/server.js --node-ipc
.../Code - Insiders Helper .../app/extensions/typescript/out/utils/electronForkStart .../app/extensions/node_modules/typescript/lib/tsserver.js
.../Code - Insiders Helper .../app/extensions/node_modules/typescript/lib/typingsInstaller.js
.../Code - Insiders Helper .../extensions/dbaeumer.vscode-eslint-1.2.11/node_modules/vscode-languageclient/lib/utils/electronForkStart
大家可以看到
- main process
- gpu process 你是可以禁用的
- renderer process,渲染頁面
- crash reporter
- extension host,所有的extension單獨在一個process里
- file watcher
- search,我們使用了 rigrep
- 幾個 extension 自己的 process(ts,tslint,eslint)
我想在 Windows 的 Task Manager 上查看以上信息也是很方便的。同學你離真相就一步之遙,另外這鍋 Chromium 不背。
不光VSCode和Chromium,Edge也是這樣。不同標籤有可能屬於不同進程。這樣一個卡死了,另一個還可以搶救一下。
說來瀏覽器多進程化也快十年了,都有代溝了(滑稽
VSCode 基於 Electron,而 Electron 又使用 Chromium 做界面,所以這幾個進程大體來講是和 Chromium 一樣的。
多線程對應多進程,目的是縮減頁面響應時間;
雖然我不懂 不過大概跟瀏覽器有多個進程差不多?
所以我之前問過關於微信和Github類似的問題
推薦閱讀:
※vim或者emacs有什麼插件可以像ide那樣分析語法樹的嗎?
※OSX 上免費的MarkDown編輯器,大家一般用的什麼?
※在 Linux 下,大家都喜歡用什麼編輯器?
※為什麼這麼多人喜歡使用 Vim 或 Emacs?
※用mbp文本編輯器寫出來的html在safari和谷歌瀏覽器顯示不同?
TAG:文本編輯器 | 微軟Microsoft | 開源項目 | VisualStudioCode |