そう感じたことはありませんか?それはおそらく気のせいではありません。WSL2はデフォルトで、PCに搭載されている総メモリの最大50%(最大8GB)を自動的に使用するよう設計されています。16GBのPCなら気づかないうちに8GB、8GBのPCなら4GBをWSL2が確保してしまうことがあります。
この記事では、.wslconfigというWindowsの設定ファイルを作成して、WSL2が使えるメモリとCPU数を自分で制限する手順を解説します。設定後に
free -hコマンドで変化を確認するところまで、一緒に体験してみましょう。この記事のポイント
・WSL2はデフォルトで総メモリの最大50%を自動使用するためPCが重くなりやすい
・%USERPROFILE%\.wslconfigを作成してmemoryとprocessorsを指定する
・設定後は wsl --shutdown でWSL2を再起動しないと変更が反映されない
・free -h と nproc で制限が正しく適用されたか確認できる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
なぜWSL2はWindowsのメモリをたくさん使うのか
WSL2はWindowsとは別の仮想マシン(Hyper-V)の中でLinuxを動かしています。このLinux仮想マシンに対して、Windowsは「Linuxが必要なときはメモリを自由に使っていいよ」という設定をデフォルトにしています。具体的には、Windows 11ではPC全体のメモリの最大50%(上限8GB)がWSL2に割り当てられる可能性があります。開発作業や重いツールを使っているときは実際にその領域まで消費されることがあり、Windowsのブラウザやアプリが急に遅くなる原因になります。
WSL2が使ったメモリはLinux側が不要と判断したら返却されることになっていますが、実際にはWindowsに戻りにくい状態が続く場合があります。このため、WSL2専用の上限をあらかじめ設定しておく方が安定して快適に使えます。
.wslconfigとは何か|Windowsから制御できる設定ファイル
.wslconfigは、WindowsがWSL2の動作を制御するための設定ファイルです。このファイルはデフォルトでは存在せず、自分で作成する必要があります。保存場所はWindowsのユーザーフォルダ直下です。
・保存場所:
C:\Users\(あなたのユーザー名)\.wslconfig・環境変数表記:
%USERPROFILE%\.wslconfigこのファイルに設定を書いておくと、次にWSL2を起動したときから制限が有効になります。
.wslconfigを作成して設定する手順
1. .wslconfigファイルを作成する
Windowsの「ファイル名を指定して実行」(Winキー + R)を開き、次のパスを入力してユーザーフォルダを開きます。# Windowsの「ファイル名を指定して実行」(Win + R)に入力する %USERPROFILE%
.wslconfigというファイルが存在するか確認します。なければ、テキストエディタ(メモ帳・VS Codeなど)で新規ファイルを作成し、ファイル名を必ず.wslconfigとします(拡張子を含めたこの名前そのままで保存します)。WSL2のターミナルからも作成できます。Ubuntuターミナルを開いて次のコマンドを実行します。
# WSL2のターミナルから直接作成する方法 # WindowsのユーザーフォルダはWSL2から /mnt/c/Users/ユーザー名 として見える WINUSER=$(cmd.exe /C "echo %USERNAME%" 2>/dev/null | tr -d '\r') touch /mnt/c/Users/$WINUSER/.wslconfig nano /mnt/c/Users/$WINUSER/.wslconfig
2. 設定内容を記述する
作成した.wslconfigに以下の内容を記述して保存します。この例は8GBメモリ・8コアCPUのPCでWSL2を使う場合の設定例です。[wsl2] memory=4GB processors=4 swap=2GB localhostForwarding=true
3. WSL2を再起動する
設定ファイルを保存したら、WSL2を完全に停止して再起動します。この手順を省くと設定が反映されません。WindowsのコマンドプロンプトまたはPowerShellを開いて次を実行します。
# WSL2を完全に停止する(全ディストリビューションが終了する) wsl --shutdown # 数秒待ってからWSL2を再起動する(Ubuntuを起動する場合) wsl
4. 設定が適用されたか確認する
WSL2が起動したら、free -hとnprocコマンドで設定を確認します。# check memory limit after wsl --shutdown $ free -h total used free shared buff/cache available Mem: 3.8Gi 1.1Gi 2.5Gi 8.0Mi 190Mi 2.5Gi Swap: 2.0Gi 0B 2.0Gi # check cpu core count $ nproc 4
totalの列がmemory=4GBで指定した値(約3.8GiB)になっていれば設定成功です。nprocもprocessors=4で指定した通りに表示されているはずです。参考として、設定前のWSL2のデフォルト状態(16GBメモリのPC)では次のように表示されます。
# デフォルト状態(16GBメモリのPCの場合) $ free -h total used free shared buff/cache available Mem: 15Gi 2.3Gi 12Gi 8.0Mi 1.3Gi 13Gi Swap: 4.0Gi 0B 4.0Gi $ nproc 12
設定項目の詳細
.wslconfigで設定できる主な項目を説明します。・memory:WSL2が使用できるメモリの最大値。
4GBや2048MBのように数値+単位で指定します。PCの搭載メモリの25~50%程度が目安です。・processors:WSL2が使用できるCPUの論理コア数。
nprocで確認できる全コア数以下で指定します。・swap:スワップ領域のサイズ。メモリが不足したときに使われる仮想領域です。
0にするとスワップなしになりますが、メモリ不足時に問題が起きる可能性があります。・localhostForwarding:
trueにするとWSL2内で起動したサーバーにWindowsのブラウザからlocalhost:ポート番号でアクセスできます。デフォルトはtrueです。用途別のおすすめ設定
PCのメモリ容量や作業内容に合わせて設定を調整しましょう。| 用途・PC環境 | memory | processors |
|---|---|---|
| コマンド学習・軽い開発(8GBのPC) | 2GB | 2 |
| Webアプリ開発・Docker利用(16GBのPC) | 4GB | 4 |
| コンパイル・AI推論など重い処理(32GBのPC) | 8GB | 8 |
| 制限なし(デフォルト動作) | 記述しない | 記述しない |
トラブルシュート|設定が反映されない場合
「wsl --shutdown」後に再起動しても変化がない
.wslconfigの保存場所を確認してください。C:\Users\ユーザー名\.wslconfigの直下に保存されているかどうか、エクスプローラーのアドレスバーで確認します。サブフォルダに入れた場合は認識されません。また、拡張子にも注意が必要です。Windowsのメモ帳で保存すると
.wslconfig.txtになってしまうことがあります。エクスプローラーで「表示」→「ファイル名拡張子」にチェックを入れて確認し、.txtが付いていれば削除してください。メモリを少なく設定しすぎてWSL2が重くなった
memory=1GBのように極端に少ない値を設定すると、Linux側でメモリ不足が発生してかえって動作が不安定になります。最低でも2GBは確保することをおすすめします。設定後はfree -hでavailableの列に500MB以上の余裕があるか確認しましょう。デフォルト設定に戻したい
.wslconfigを削除(またはファイル名を変更して退避)してからwsl --shutdownで再起動すると、デフォルトの設定に戻ります。本記事のまとめ
| やりたいこと | 操作・コマンド |
|---|---|
| メモリ上限を4GBに設定する | .wslconfigにmemory=4GBを記述 |
| CPUコア数を4に制限する | .wslconfigにprocessors=4を記述 |
| 設定を反映させる | wsl --shutdown → WSL2再起動 |
| メモリ制限が効いているか確認する | free -h |
| CPUコア数が制限されているか確認する | nproc |
| デフォルト設定に戻す | .wslconfigを削除 → wsl --shutdown → 再起動 |
無料の「Linuxサーバー構築入門マニュアル(図解60ページ)」をプレゼントしています。
WSL2の環境が整ったら、次はLinuxサーバー管理の基礎を体系的に学んでみましょう。
無料マニュアルを受け取る >>
関連記事:Linuxスキルをさらに伸ばす
WSL2のメモリ設定が完了したら、実際のLinux運用で使うコマンドを深く学んでみましょう。・tmuxコマンドでターミナルを分割・管理する方法|セッション維持やペイン操作の実践例も
・systemctlコマンドでLinuxのサービスを管理する方法|start・stop・enable・statusの使い分けも
・nmcliコマンドでネットワーク接続を設定する方法|静的IP・DHCP・接続追加・削除の手順も
・fail2banコマンドでブルートフォース攻撃を自動ブロックする方法|SSHの不正アクセス対策とトラブルシュートも
・lsofコマンドで開いているファイルとポートを確認する方法|プロセス特定と障害切り分けの実践例も
・journalctlコマンドでsystemdのログを確認する方法|日時指定・ユニット絞り込み・リアルタイム監視も
・awkコマンドでテキストを加工する方法|列の抽出・集計やログ解析の実践例も
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 前のページへ:WSL2の初期設定入門|Windowsターミナルを見やすくしてzshに切り替える方法を初心者向けに解説
- この記事の属するカテゴリ:【Linux入門】初心者のための基礎知識・講座へ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます