近日,有開發者提交了一個 VSCode 內存泄露的 issues,該問題導致在某些情況下使用 VSCode 會使內存使用率攀升。令人意外的是,VSCode 官方卻表示不打算解決此問題,由此在社區引發了爭議。
今年十月,有一名開發者發現了 VSCode 中存在內存泄漏的問題,并在官方倉庫的 issues 中提交了這個問題:
1. 準備一個大文本文件(Citylots.json為?190MB):
wget "https://github.com/zemirco/sf-city-lots-json/blob/master/citylots.json"
cp citylots.json evenlarger.json
cat citylots.json >> evenlarger.json
cat citylots.json >> evenlarger.json
3. 滾動。
4. 關閉文件。
5. 通過“ Process Explorer”觀察內存使用情況。
6. 即使大約 30 分鐘后,內存使用率仍然很高:
即使禁用所有擴展后依然會發生此問題。
隨后,這名開發者又注意到這個內存泄漏的 BUG 實際上與大文件無關,他通過打開幾個 5-10MB 的文本文件重現了這一問題,即使關閉所有編輯器并等待幾分鐘后,也無需進行任何操作即可看到內存使用率攀升。該開發者表示,自己遇到這個問題時唯一的解決辦法是一旦發現系統內存不足,就只能重新加載 VSCode 窗口,非常麻煩。
而令人意想不到的是,VSCode 官方對此問題的回應竟然是置之不理:
我們已關閉此問題,因為我們不打算在可預見的將來解決此問題。您可以在此處找到有關我們決策過程的更多詳細信息。如果您不同意并認為此問題至關重要:我們很樂意傾聽并重新考慮。
VSCode 官方的回復很快引發了爭議,在這名開發者提交的 issue 下,有很多用戶跟帖表示自己遇到了同樣的問題,還有的甚至在一年前就遇到了類似的問題,并認為官方這樣的做法對社區用戶來說是不負責任的表現。
時隔近兩個月,導致這一問題的 VSCode 維護者才終于修復了這一問題:
“ 首先,很抱歉出現了這一錯誤,我們已經添加了修復程序。以下是有關錯誤和修復的詳細信息:
我們有基于文件的推薦功能(FileBasedRecommendations),將可監聽文本模型添加到了編輯器中,并根據文件擴展名和語言推薦擴展名。最近,我對此功能進行了改進,以在用戶更改文件的語言時提供檢查建議(更多詳細信息,在此處#102823)。為此,我需要設置監聽器監聽文本模型的語言更改,我原本僅在處置FileBasedRecommendations類時才調用此監聽器,而導致內存泄漏的原因正是因為在處置完模型后監聽器仍在工作。
我們通過在處置模型FileBasedRecommendations(onWillDispose)時處置模型監聽器的 has 來解決此問題。”
issues 詳情:https://github.com/microsoft/vscode/issues/107999
本文地址:https://www.oschina.net/news/121783/vscode-memory-leakage-issues