Windows 10/11のメモリ圧縮(Memory Compression)プロセスとは?メモリ・CPU使用率が高くなる問題の対処法
Windows 10および11に搭載されているメモリ圧縮(Memory Compression)機能は、RAM上の一部のメモリページを圧縮することで、物理メモリの利用効率を最適化する仕組みです。この機能を活用すれば、ディスクへページアウトすることなく、より多くのプロセスを物理メモリ上に保持できます。圧縮・展開のためにある程度CPUリソースは消費しますが、必要なデータはRAMから直接取得できるため、結果として高速なアクセスが可能になります。メモリ圧縮によって、RAM使用量の削減、I/O操作の減少によるハードディスク負荷の軽減、そしてSSDの消耗を抑えるといった効果が期待できます。
MicrosoftはWindows 10およびWindows Server 2016において、メモリマネージャー(Memory Manager:MM)プロセス経由でメモリ圧縮機能を初めて導入しました。本記事では、Windowsにおける圧縮メモリの使用統計の確認方法と、Memory Compressionプロセスの負荷が原因でPCの動作が遅くなっている場合の、メモリ圧縮の有効化/無効化の手順について解説します。
Windows 10/11における圧縮メモリ(Compressed Memory)
Windowsのメモリマネージャーは、メモリ不足を検知すると、未使用のメモリページをディスク上のページファイルへ書き出す代わりに圧縮し、他のプロセス用にRAMを解放しようとします。
当初、「システムとメモリ圧縮」という処理はSystemプロセス内部で動作していたため、トラブルシューティングの際には扱いづらい存在でした。しかし近年のWindowsビルド(Windows 10 20H2以降およびWindows 11)では、この機能が独立したMemory Compressionプロセスとして分離され、タスクマネージャーには表示されなくなっています。このプロセスの情報は、PowerShellのGet-Processコマンドレットで確認できます。
Get-Process -Name "Memory Compression"
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
0 0 1548 380920 1,104.59 1764 0 Memory Compression

タスクマネージャーで圧縮メモリの使用状況を確認する
圧縮メモリの現在の使用レベルを確認できるのは、Windowsのタスクマネージャーだけです。
「パフォーマンス」タブを開き、「メモリ」セクションを選択してください。「使用中(圧縮済み)」の項目に、現在の圧縮メモリの使用量が表示されます。下記の例では合計4.5GBが使用中で、そのうち373MBが圧縮されています。元のデータ量がどれほど圧縮されたのかを知るには、「メモリの構成」グラフにマウスカーソルを合わせます。
使用中の圧縮メモリ(373MB)。圧縮メモリには推定1,549MBのデータが格納されており、約1,176MBのメモリを節約しています。
ご覧のとおり、圧縮率は約315%に達しており、RAMの節約効果はかなり大きいことがわかります。

また、Process Explorerを使えば、Windows 11/10におけるMemory Compressionプロセスの実際のCPU使用率や消費メモリサイズを確認することもできます。
Process Explorerを起動し、Systemプロセスツリーの中からMemory Compressionプロセスを探してください。

SysMainサービスとの関係
Memory Compressionプロセスは、SysMainサービス(旧SuperFetch)によって管理されています。SysMainは、メモリページを圧縮・統合することでディスクへの書き込み(ページング)を削減します。このサービスが停止している場合、WindowsはRAMの圧縮を使用しません。
SysMainサービスの状態は、次のPowerShellコマンドで確認できます。
get-service sysmain

多くの場合、PCが正常に動作していて十分なRAM容量があるのであれば、メモリ圧縮プロセスは問題なく機能しており、管理者側で特別な対応を行う必要はありません。
「システムとメモリ圧縮」によるCPU・メモリ使用率の高騰
SysMainサービスとMemory Compressionプロセスは、PCのパフォーマンス向上を目的とした機能です。しかし、メモリ圧縮プロセスがCPUやハードディスクに過度な負荷をかけたり(タスクマネージャーで100%近く表示されることもあります)、RAMを大量に消費したりするケースがあります。当然ながら、PCの動作が遅くなったりフリーズしたりする原因にもなり得ます。

このような場合、どう対処すればよいのでしょうか。ここでは、メモリ圧縮プロセスによるリソース高負荷問題の解決に役立つヒントをいくつか紹介します。
- ページファイルを一時的に無効化し(「ページファイルなし」を選択)、PCを再起動します。その後、ページファイルを再度有効化し(「すべてのドライブのページファイルのサイズを自動管理」にチェックを入れ)、もう一度再起動してください。
- スリープまたは休止状態からの復帰後にのみ問題が発生し、再起動すると解消される場合は、ストレージコントローラー(ACPI/AHCI/RAID/SCSI)、HDD/SSD、ビデオカードの最新ドライバーを各メーカーの公式サイトからダウンロードしてインストールしてください。その後、自動ドライバー更新を無効化することをおすすめします。

これらの対処でも改善しない場合は、Windowsがメモリ圧縮を使用しないよう、機能を完全に無効化してみましょう。
Windows 10/11でメモリ圧縮を無効化する方法
メモリ圧縮を使わずにWindows 10が安定動作するかを確認したい場合は、一時的にこの機能を無効化できます。まず、管理者権限でPowerShellを開き、メモリ圧縮が有効になっているかを確認しましょう。
Get-mmagent
ApplicationLaunchPrefetching : True ApplicationPreLaunch : True MaxOperationAPIFiles : 512 MemoryCompression : True OperationAPI : True PageCombining : True
MemoryCompression : Trueと表示されていれば、メモリ圧縮は有効になっています。
次のコマンドでメモリ圧縮を無効化します。
Disable-MMAgent –MemoryCompression
そしてPCを再起動します。
Restart-Computer

無効化後にシステム全体のパフォーマンスが変化したかを確認してください。パフォーマンスが明確に改善したようであれば、メモリ圧縮を無効化したまま運用しても問題ありません。
その他の対処方法
メモリ圧縮に関連する問題には、以下の対策が有効なケースもあります。
- SysMainサービス(旧SuperFetch)を無効化します(
services.msc→ SysMain → スタートアップの種類:「無効」)。これにより、メモリマネージャーによるWindows 10/11のメモリ最適化処理が停止します。 - タスクスケジューラで完全メモリ診断タスクRunFullMemoryDiagnosticを無効化します(タスクスケジューラ → タスクスケジューラライブラリ → Microsoft → Windows → MemoryDiagnostic → RunFullMemoryDiagnostic(物理メモリ(RAM)の問題を検出して軽減します)→ 無効)。

- ネットワークアクティビティ監視ドライバー(Network Data Usage:NDU)を無効化してみます。
- ウイルス対策ソフトのリアルタイム保護を一時的に無効化します。圧縮メモリとの相性で誤動作している可能性があります。
- DISMおよびSFCコマンドでWindowsのシステムイメージファイルをチェックします。
これらの対策により、メモリ圧縮プロセスによる高負荷問題を解消できることがあります。ただし、いずれもWindows本来のパフォーマンス最適化機能を無効化することになるため、デバイス全体のパフォーマンスに悪影響を及ぼす可能性がある点には注意が必要です。
Windows Server 2016/2019/2022またはWindows 10でメモリ圧縮を有効化する方法
すべてのバージョンのWindows Serverでは、メモリ圧縮はデフォルトで無効になっています。
Get-mmagentコマンドを実行して、メモリ圧縮が無効であることを確認できます。以下のスクリーンショットは、Windows Server 2022でMemory Compression = Falseとなっている例です。

Windowsがメモリ圧縮を使用するには、以下の条件を満たす必要があります。
- ページファイルが有効になっていること(最小16MB以上のサイズが必要)
- SysMainサービスが実行中であること
- Windows 10/11またはWindows Server 2016以降を使用していること
Windowsでメモリ圧縮を有効化するには、次のPowerShellコマンドを実行します。
Enable-MMAgent -MemoryCompression
その後、PCを再起動してください。
なお、メモリ圧縮を有効化すると、SysMainのもうひとつの機能であるページ統合(Page Aggregation)も自動的にオンになります。これは同じ内容のメモリページを結合する機能で、いわばRAM版の重複排除(デデュプリケーション)のようなものです。
通常、Windows 10/11のメモリ圧縮機能は非常に効果的に動作しており、特別な介入は必要ありません。もしメモリ圧縮が原因と思われる問題が発生しているなら、多くの場合それはシステム設定、ハードウェア、またはドライバーに何らかの問題を抱えているサインです。必要であれば、メモリ圧縮を完全に無効化することも可能です。
-
Windows 10でCPU・ディスク使用率が100%になる問題を解決する15の対処法
メモリを大量に使う作業を何もしていないのに、タスクマネージャー(Ctrl + Shift + Escキーで起動)を開くと、ディスク使用率がほぼ100%、メモリ使用率も異常に高い——そんな症状に悩まされているユーザーが後を絶ちません。 「低スペックPC特有の問題だろう」と思われがちですが、実際にはCore i7プロセッサと16GBメモリを搭載した高性能マシンでも同じ現象が発生しています。この問題を放置すると、PCの動作が極端に遅くなったり、最悪の場合フリーズしてまともに操作できなくなります。 Windows 10でCPU・メモリ使用率が高くなる主な原因 Windows 10のメモリリーク Wi
-
【解決】Windowsホストプロセス「Rundll32」のCPU使用率が高いときの対処法
Windows OSは、アプリ、プロセス、ドライバーなど、数え切れないほど多くのコンポーネントで構成されています。システムがアイドル状態であっても、気づかないだけで何千ものプロセスがバックグラウンドで動作しています。アクティブなアプリを操作していないのに、なぜか動作が遅く感じたことはありませんか? デバイスのパフォーマンスが低下したとき、真っ先に確認するのが「タスクマネージャー」ですよね。タスクマネージャーでは、バックグラウンドで実行中のアプリやプロセスが一覧表示され、それぞれが現在使用しているCPUやディスクの使用率も確認できます。CPU使用率を最も消費している犯人となるプロセスを見つけたら