今年の10月、開発者はVSCodeでメモリリークを発見し、公式倉庫の問題でこの問題を提出しました。
1.大きなテキストファイルを準備します(Citylots.jsonは約190MBです)。
wget "https://github.com/zemirco/sf-city-lots-json/blob/master/citylots.json" cp citylots.jsonevenlarger.json cat citylots.json >> evenlarger.json cat citylots.json >> evenlarger.json
2.vscodeでevenlarger.jsonを開きます
3.スクロールします。
4.ファイルを閉じます。
5.「プロセスエクスプローラー」を使用して、メモリ使用量を監視します。
6.約30分後でも、メモリ使用量は依然として高いです。
この問題は、すべての拡張機能を無効にした後でも発生します。
その後、開発者は、このメモリリークのバグが実際には大きなファイルに関連していないことに気付きました。すべてのエディタを閉じて数分待った後でも、5〜10 MBのテキストファイルをいくつか開いて問題を再現しました。メモリ使用量の増加を確認するために何もする必要はありません。開発者は、この問題が発生したときの唯一の解決策は、システムメモリが不十分であることがわかったら、VSCodeウィンドウをリロードすることであり、これは非常に面倒だったと述べました。
予想外のことは、この問題に対するVSCodeの公式の対応が無視されていることが判明したことです。
近い将来に解決する予定がないため、この問題を解決しました。あなたはできる私たちの意思決定プロセスに関する詳細な情報を見つけるここに。同意せず、この問題が重要であると思われる場合は、喜んで耳を傾け、再考します。
VSCodeの公式の対応はすぐに論争を引き起こしました。この開発者によって提出された問題の下で、多くのユーザーが同じ問題に遭遇したと投稿し、1年前に同様の問題に遭遇した人もいます。このような公式のアプローチは、コミュニティユーザーには無責任です。
ほぼ2か月後、この問題を引き起こしたVSCodeメンテナが最終的に問題を修正しました。
まず、このエラーをお詫び申し上げます。修正を追加しました。エラーと修正の詳細は次のとおりです。
ファイルベースの推奨機能(
FileBasedRecommendations
)があり、監視可能なテキストモデルをエディタに追加し、ファイルの拡張子と言語に基づいて拡張子を推奨します。最近、この機能を改善して、ユーザーがファイルの言語を変更したときに検査の提案を提供するようにしました(詳細については、#102823を参照してください)。このため、テキストモデルの言語変更をリッスンするリスナーを設定する必要があります。もともとはFileBasedRecommendations
クラスを破棄するときにのみこのリスナーを呼び出しました。メモリリークの理由は、モデルを破棄した後もリスナーがまだ動作していたためです。モデルを破棄するときにモデルリスナーの持っているものを破棄することで、この問題を解決します
FileBasedRecommendations
(onWillDispose
)。