ご不便をおかけして申し訳ありません。ウィンドウを再度開いて、中断されたところから続行できます。
やめて!!!!!!!よ!!!!!!!!!!!!!!!

数日前からSSH接続先でのVS Codeの調子が悪い。
動作が遅く、挙句の果てにはoom(Out Of Memory)を吐いてしまう。
これではなかなか研究が進まない......
そんな私の原因解明と解決の一部始終を記録します。
誰かのお役に立てば幸いです。
Windows11環境です
原因をつきとめたい
先ずはとにかくエラーメッセージを見てみる。『oom』とは Out Of Memory(メモリ不足) のことで、何かしらのRAMが上限を超えてしまい、処理をしきれなくなった状態を指す。
今回はSSH接続をしているので、うーむメモリとはホスト側の問題か、ローカル側の問題か......
タスクマネージャで ローカルPCの メモリの変化を見てみる
もしもこのoomがローカル側の問題であれば、自分のPCそのもののRAMに変化が見られるはずだ。というか、ホスト側のoomだったらホスト側のサーバーに迷惑かけてそうでこわい!
ぐわああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ
ひとまず、oomが起きているのはローカルPCだった。よかった~(よくない)(よくない)(よくない!!!!)
ということで、いろいろ試した
調べてみると、このエラーを引き起こすトリガーは多岐にわたるようで、一概にこれ、といった解決方法は無いようだった。しらみ潰しにネットに載ってある方法を試してみる。
これが解決方法カタログとして提供できていれば幸いです。
容疑者1. VSCodeの追跡機能
上記のとあるスレッドによると、重たいファイルや階層が深く複雑なフォルダ(動画のデータセットとか)を開こうとすると、VSCodeがファイルの情報を読み取ろうとしてメモリを食いつぶすことがあるらしい。VSCodeでは、これを制限するための設定がある。
[Ctrl]+[,]で設定を開く
↓
Large File Optimizations と検索
↓
項目にチェック
私の場合はすでにチェックが付いていました。
ちなみ、SSH上のUbuntsuなどの場合は、~/.vscode-server/data/Machine/settings.jsonにSSH上でのみ有効な設定ファイルがあるそうです。もちろんGUIからも設定可能。
settings.jsonで利用可能なキーワードと例を以下にまとめておきます。
settings.json
主なキーワードの役割
files.watcherExclude
VS Codeがバックグラウンドで変更を監視する対象からフォルダ・ファイルを除外します。
files.exclude
VS Codeのエクスプローラー(左サイドバー)のツリー表示から非表示にします。
search.exclude
プロジェクト全体のテキスト検索(Ctrl + Shift + F)時にインデックス生成や走査の対象外とします。
git.autorefresh
リポジトリ配下に大きなファイルを置いている場合、Gitの差分検知が裏で走るのを防ぎます。
editor.largeFileOptimizations
20MB または 300,000行を超えるファイルを開いたとき、一部の機能(シンタックスハイライトや自動フォーマットなど)を自動的に無効化します。
ファイルの設定例
念のためですが、json にはコメントアウトの機能はありません。
参考にする場合は気をつけてください。
{
// 1. ファイル監視の除外(メモリ消費抑制に最も効果的)
"files.watcherExclude": {
"**/.git/objects/**": true,
"**/.git/subtree-cache/**": true,
"**/node_modules/**": true,
"**/.venv/**": true,
"**/dataset/**": true, // 大規模データセット置き場があったりしないか?
"**/data/**": true, // 動画・画像データなどが重いかも?
"**/checkpoints/**": true, // 学習済みモデル重みなどのせい?
"**/*.mp4": true, // 特定の重い拡張子も指定可能
"**/*.tar.gz": true
},
// 2. エクスプローラーや検索対象からの除外
"files.exclude": {
"**/.git": true,
"**/.venv": true,
"**/dataset/**": true // ツリー表示自体が重い場合に非表示化
},
"search.exclude": {
"**/dataset/**": true,
"**/checkpoints/**": true
},
// 3. Git連携による差分スキャン負荷の軽減
"git.autorefresh": false, // 自動リフレッシュを停止
"git.ignoreLimitWarning": true,
// 4. 大容量ファイルの最適化(エディタ全体の挙動抑制)
"editor.largeFileOptimizations": true
}
ふ~ん
容疑者2. VSCodeの拡張機能(プロセス エクスプローラー)
プロセス エクスプローラ
Visual Studio Codeが使用しているCPUやメモリの消費量をプロセスごとに確認・管理できる内蔵ツール。Windowsのタスクマネージャ同様に、個別にタスクを終了できる。
[Ctrl]+[Shift]+[P] でコマンドパレットを開く
↓
Developer: Open Process Explorer
↓
メモリをたくさん消費しているものを一時的に終了してみる
ほぼモザイクかけているのであんまり見る価値がないのですが、extention-hostというものがいくつか立ち上がっていて、メモリを大きく消費しているようです。
extention-hostは、
によると
Depending on the configuration of VS Code, there are multiple extension hosts running, with different runtimes, at different locations.
- local – A Node.js extension host running locally, on the same machine as the user interface.
- web – A web extension host running in the browser or locally, on the same machine as the user interface.
- remote – A Node.js extension host running remotely in a container or a remote location.
Geminiに訳してもらって、
VS Codeの構成(動作環境)に応じて、それぞれ異なる場所で、異なるランタイムを持つ複数のExtension Hostが稼働します。
- local: UI(ユーザーインターフェース)と同じローカルマシン上で動作する、Node.jsベースのExtension Host。
- web: ブラウザ内、またはUIと同じローカルマシン上で動作する、Web(Browser >WebWorker)ベースのExtension Host。
- remote: コンテナやリモートサーバー上などの離れた環境で動作する、Node.jsベースのExtension Host。
とのこと。4GBの消費は明らかに異常でしょうが、実際にどの拡張機能が悪さしているかまでは特定できず。そもそも重すぎるから?キルできないし。
インストールしていた拡張機能の一覧をスクショしておいて、必要最低限の拡張機能以外は削除してみたのですが、依然として解決せず。
なぜなんだよぜ......
容疑者3. 余分なプロセスを消す
なんか調査続けてたら、oomエラーが頻繁に頻繁に頻繁に起きて、VS Code上でなんにもできなくなってしまった......
コマンドプロンプトから直でSSH接続して、不要なプロセスの削除を試す。
# 起動中のすべてのプロセスのうち、vscodeと含まれるものを表示。
$ ps -auxww | grep vscode
# たくさんでてきた
# ↓↓スクショをGeminiに都合よく文字起こししてもらっているので、雰囲気です。
user 1028564 0.0 0.0 2892 956 ? S 19:44 0:00 sh ~/.vscode-server/.../bin/code-server --connection-token=remotessh --accept-server-license-terms --start-server --enable-remote-auto-shutdown --socket-path=/tmp/code-b8a8...
user 1028568 0.5 0.1 11857020 138256 ? Sl 19:44 1:22 ~/.vscode-server/.../node ~/.vscode-server/.../out/server-main.js --connection-token=remotessh --accept-server-license-terms --start-server --enable-remote-auto-shutdown --socket-path=/tmp/code-b8a8...
user 1028616 0.2 0.0 1592008 82928 ? Sl 19:44 0:34 ~/.vscode-server/.../node ~/.vscode-server/.../out/bootstrap-fork --type=ptyHost --logsPath ~/.vscode-server/data/logs/20260423T194411
user 1028843 0.0 0.0 35336 10012 pts/229 Ss+ 19:44 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1028883 0.0 0.0 36452 10160 pts/235 Ss+ 19:44 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1029739 0.0 0.0 35336 10012 pts/243 Ss+ 19:47 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1101102 0.0 0.0 35336 9972 pts/175 Ss+ 22:47 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1101564 0.0 0.0 35336 9988 pts/238 Ss+ 22:49 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1102049 0.0 0.0 35336 10040 pts/256 Ss+ 22:52 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1102497 0.0 0.0 35336 10080 pts/244 Ss+ 22:54 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1102954 0.0 0.0 35336 10004 pts/260 Ss+ 22:56 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1104569 0.0 0.0 35336 9996 pts/257 Ss+ 22:59 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1106235 0.0 0.0 35336 10008 pts/263 Ss+ 23:02 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1106867 0.0 0.0 35336 10036 pts/262 Ss+ 23:06 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1107944 0.0 0.0 35336 10000 pts/259 Ss+ 23:09 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1108844 5.6 2.1 67576240 2838296 ? Sl 23:18 1:50 ~/.vscode-server/.../node --dns-result-order=ipv4first ~/.vscode-server/.../out/bootstrap-fork --type=extensionHost --transformURIs --useHostProxy=false
user 1108857 0.0 0.0 1050736 59072 ? Sl 23:18 0:00 ~/.vscode-server/.../node ~/.vscode-server/.../out/bootstrap-fork --type=fileWatcher
user 1108907 0.0 0.0 31388 4836 ? SL 23:18 0:00 ~/.vscode-server/extensions/.../python-env-tools/bin/pet server
user 1109045 0.0 0.0 35336 10060 pts/261 Ss+ 23:18 0:00 /bin/bash --init-file ~/.vscode-server/.../shellIntegration-bash.sh
user 1109175 16.7 0.4 23745260 647976 ? Sl 23:18 5:23 ~/.vscode-server/.../node ~/.vscode-server/extensions/.../server.bundle.js --cancellationReceive=file:7b57f73... --node-ipc --clientProcessId=1108844
user 1110416 0.0 0.0 18784 2356 pts/266 S+ 23:50 0:00 grep vscode
特筆するならば、下から2番目の
user 1109175 16.7 0.4 23745260 647976 ? Sl 23:18 5:23 ~/.vscode-server/.../node ~/.vscode-server/extensions/.../server.bundle.js --cancellationReceive=file:7b57f73... --node-ipc --clientProcessId=1108844
こいつが大きくて、cpuの16.7%を消費している。
こうした特定のプロセスだけを狙って削除するには、killコマンドでプロセスIDを直接指定する。
$ kill 1109175
ひとまずvscode系のプロセスを全部消しちゃいたければ、以下。
本当に消して良いときだけ実行してくださいね。
$ pkill -9 -f vscode
(-9 は強制終了オプションなので -9 なくても消えるものは消えます。)
まあ、そんなに意味無かったんですけど(再度VS Codeから多少動かせるようにはなった)
容疑者4. クリーンインストール(直った)
根本的解決。トゥルーバッドエンド。VSCodeを消して、また入れた。
クリーンインストールの手順を記述します。
クリーンインストールは自己責任で。大事なファイルが消えても責任は取れません!
0. クリーンインストールの心構え
手順としては、VS Codeをアンインストールして、もう一度インストールするわけです。再インストールする際、万が一パソコンの中に残っている設定が復元されたら、またoom地獄が繰り返されるかもしれません。逆に、拡張機能やテーマなど、復元したいものは残せるように準備します。
1. 復元する準備をしよう
拡張機能やテーマなど、元通り復元できるように、スクショしたりコピペしたりして見返せるようにしておきましょう。
チェックリストおいておきますね
-
設定ファイル(
settings.json)
ユーザー設定(フォントサイズ、フォーマッター、除外設定など)
C:\Users\<ユーザー名>\AppData\Roaming\Code\User\settings.json -
言語モデル・AI拡張の設定(
chatLanguageModels.json)
GitHub Copilot や Cline、その他 AI 拡張機能で追加・構成したカスタムLLMの設定
C:\Users\<ユーザー名>\AppData\Roaming\Code\User\chatLanguageModels.json -
キーバインド(
keybindings.json)
こだわってカスタマイズしたショートカットキー
C:\Users\<ユーザー名>\AppData\Roaming\Code\User\keybindings.json -
コードスニペット(
snippets/)
スニペットってなに?って人は多分持ってないので大丈夫です(自作スニペットの保存フォルダ)
C:\Users\<ユーザー名>\AppData\Roaming\Code\User\snippets\ -
お気に入りのテーマとか、マテリアルアイコンとか
モチベーションにつながるからね -
拡張機能(Extensions)のリスト
以下のコマンドで、CLIからテキスト出力できます。
code --list-extensions > extensions.txtこういうかんじでファイル出力されます
extensions.txtecmel.vscode-html-css mechatroner.rainbow-csv ms-azuretools.vscode-containers ms-azuretools.vscode-docker ms-ceintl.vscode-language-pack-ja ms-python.debugpy ms-python.python ms-python.vscode-pylance ms-python.vscode-python-envs ms-toolsai.jupyter ms-toolsai.jupyter-keymap ms-toolsai.jupyter-renderers ms-toolsai.vscode-jupyter-cell-tags ms-toolsai.vscode-jupyter-slideshow ms-vscode-remote.remote-ssh ms-vscode-remote.remote-ssh-edit ms-vscode.cpptools ms-vscode.remote-explorer ms-vsliveshare.vsliveshare pkief.material-icon-theme redhat.vscode-yaml ritwickdey.liveserver tomoki1207.pdf xabikos.javascriptsnippets yandeu.five-server
2.パスの退避
VS Code含めさまざまなアプリは、決まったパスに設定もろもろ保存するわけで、そのパスをrenameしたりmvしてしまえば設定は引き継がれずに済むはずです。以下を別のどこかにコピーしておきましょう。
C:\Users\<ユーザー名>\.vscode-shared
C:\Users\<ユーザー名>\.vscode
C:\Users\<ユーザー名>\AppData\Local\Temp\vscode-*
C:\Users\<ユーザー名>\AppData\Roaming\Code
C:\Users\<ユーザー名>\AppData\Local\Programs\Microsoft VS Code #アプリ本体がいます
3. VS Codeのアンインストール
4. VS Codeの再インストール
インストールの前に、念のため以下のパスにフォルダがあれば消します。不安ならmvします。私なら怖いのでmvします。
C:\Users\<ユーザー名>\.vscode-shared
C:\Users\<ユーザー名>\.vscode
C:\Users\<ユーザー名>\AppData\Local\Temp\vscode-*
C:\Users\<ユーザー名>\AppData\Roaming\Code
C:\Users\<ユーザー名>\AppData\Local\Programs\Microsoft VS Code #アプリ本体がいます
そして、VS Codeのインストーラからインストール。
まっさらな光景
久しぶりだね
5. ちまちまと再設定
手順1や手順2で対比させていた設定ファイルを元のパスに上書きすれば、設定が反映されます。
拡張機能は、バックアップした extensions.txt からワンライナーで一括復元できます。
拡張機能を復元する方法
すみません、ここは手動で追加したので試してはいないですが、Geminiからの知見を共有ということで- Windows(PowerShell)の場合
Get-Content extensions.txt | ForEach-Object { code --install-extension $_ }
- コマンドプロンプト(cmd)の場合
for /F %i in (extensions.txt) do code --install-extension %i
- Bash / Linux(WSLやSSH先)の場合
cat extensions.txt | xargs -L 1 code --install-extension
問題なくVS Codeが動いている場合は、退避したファイルは削除して大丈夫です。
解決...?
クリーンインストールによって、その後oomを起こすことはなくなりました。
原因がわからず正直未解決なのですが、クリーンインストールによる解決が最短ルートなのかもしれません......。
彼の投稿に後押しされるように、クリーンインストールを実施しました。
つぎにoomがやってくるのは、あなたの町かもしれませんね
さようなら




