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