0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【VS Code】ウィンドウが予期せず終了されました(理由:'oom', コード:'-536870904')

0
Last updated at Posted at 2026-09-11

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

やめて!!!!!!!よ!!!!!!!!!!!!!!!

スクリーンショット 2026-04-22 174655.png
数日前からSSH接続先でのVS Codeの調子が悪い。
動作が遅く、挙句の果てにはoom(Out Of Memory)を吐いてしまう。
これではなかなか研究が進まない......

そんな私の原因解明と解決の一部始終を記録します。
誰かのお役に立てば幸いです。

Windows11環境です

原因をつきとめたい

先ずはとにかくエラーメッセージを見てみる。『oom』とは Out Of Memory(メモリ不足) のことで、何かしらのRAMが上限を超えてしまい、処理をしきれなくなった状態を指す。
今回はSSH接続をしているので、うーむメモリとはホスト側の問題か、ローカル側の問題か......

タスクマネージャで ローカルPCの メモリの変化を見てみる

もしもこのoomがローカル側の問題であれば、自分のPCそのもののRAMに変化が見られるはずだ。というか、ホスト側のoomだったらホスト側のサーバーに迷惑かけてそうでこわい!

ぐわああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああああ

タスクマネージャ(死).png
今にもメモリが溢れそうである。

ひとまず、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 にはコメントアウトの機能はありません。
参考にする場合は気をつけてください。

設定例(settings.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というものがいくつか立ち上がっていて、メモリを大きく消費しているようです。

プロセス エクスプローラ.png

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.txt
    ecmel.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のアンインストール

けす
あ、、、あ、、、.png
きえた

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のインストーラからインストール。

まっさらな光景

久しぶりだね

hell new world.png

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を起こすことはなくなりました。
原因がわからず正直未解決なのですが、クリーンインストールによる解決が最短ルートなのかもしれません......。

彼の投稿に後押しされるように、クリーンインストールを実施しました。

諦め.png

つぎにoomがやってくるのは、あなたの町かもしれませんね
さようなら

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?