Windows のメモリを理解する

スポンサーリンク

今回は中級者以上向けにWindows のメモリについて説明したいと思います。

1. 物理メモリと仮想メモリとページングファイル

初歩的なことですが、物理メモリ、仮想メモリとページングファイルの関係について、意外と理解していない人が多いようなので、念のため説明しておきます。

物理メモリとはその名のとおり物理的なメモリです。メインメモリやRAM (Random Access Memory)とも呼ばれます。下の画像は物理メモリの例です。

物理メモリ

物理メモリとは別にWindows には仮想メモリという仕組みがあります。仮想メモリでは物理メモリを拡張するための領域をハードディスク内に作成します。このハードディスク内に作成された領域をページングファイル (またはページファイル) と呼びます。

仮想メモリは物理メモリとページングファイルを合わせた領域を指します。「仮想メモリ = ページングファイル」のように誤って理解している人が多く見られますので、ご注意ください。

仮想メモリ

2. Windows のメモリの利用状況を確認する

2.1. リソースモニターからメモリを確認する

それでは次にリソースモニターを使って、Windows の物理メモリの状態を確認してみましょう。
※参考: リソースモニターの開き方

このコンピュータでは16GB (16,384 MB) のメモリを搭載していますが、その内 330MBはハードウェアで予約されており、OSで使える物理メモリは 15.7GB (16,054 MB) になります。

下図はOSで利用可能な合計物理メモリにフォーカスしたものですが、下記のようになっています。使用中の物理メモリのサイズは 5.3 GB (5,445 MB)です。利用可能なメモリは 10GB (10,270 MB) です。

各項目の意味は下表を参照してください。

No.項目説明
1インストール済みコンピュータにインストールされている物理メモリの量
2ハードウェア予約済みBIOS または他の周辺機器のドライバーで使用するために予約されたメモリ。
3使用中プロセス、ドライバー、またはオペレーティングシステムで使用されているメモリ。
4変更済み他の用途に使用する前にディスクへの書き込みが必要な内容が含まれているメモリ。
5スタンバイキャッシュデータやアクティブに使用されていないコードが含まれているメモリ。
6空き現在使用されておらず、プロセス、ドライバー、またはオペレーティングシステムがより多くのメモリを必要とするときに最初に再利用されるメモリ。
7利用可能スタンバイ メモリ+ 空きメモリ
(プロセス、ドライバー、またはオペレーティングシステムですぐに利用可能なメモリの量)
8キャッシュ
済み
スタンバイメモリ + 変更済みメモリ
(プロセス、ドライバー、およびオペレーティングシステムから高速でアクセスするためのキャッシュデータおよびコードが格納されているメモリの量)

2.2. システム情報からメモリを確認する

次はシステム情報を確認してみましょう。リソースモニターでは見えなかった仮想メモリの情報も確認できます。
※参考:「システム情報」の開き方

システム情報

上記を図にすると下のようになります。物理メモリの合計サイズは15.7 GBになっていますが、リソースモニターで確認した、ハードウェアで予約済みの領域と合わせると整合性が取れていることがわかります。

「利用可能な仮想メモリ」のサイズは「合計仮想メモリ」のサイズから「コミット済み」のサイズを減じた値となります。「コミット済み」のメモリはタスクマネージャーから確認できます (2.3.を参照)。
※今回の例では 24.1GB – 6.1GB = 18.0 GB となります。

システム情報に「ページングファイルの空き容量」という項目がありますが、実はこれはOSで確保しているページングファイルのサイズになります。

下の図はある瞬間のページングファイルの情報を様々な角度から確認したものですがシステム情報の「ページングファイルの空き容量」はパフォーマンスオプションのページングファイルのサイズと同一になっていることがわかります(10,137÷1,024 ≒ 9.90)。

一方で現在のページングファイルの使用量を確認すると1,068 MBであることがわかります。

2.3. タスクマネージャーらメモリを確認する

最後にタスクマネージャーで確認できるメモリの各項目についても簡単に説明しておきます。
※参考:「タスクマネージャー」の開き方

タスクマネージャー – メモリ

使用中

「使用中」の5.3 GBは現在使用中の物理メモリのサイズです。リソースモニターで確認した情報と整合性が取れていることがわかると思います。

利用可能

「利用可能」の10.0 GBは利用可能な物理メモリの容量です。 物理メモリ中の「スタンバイメモリ」+ 「空きメモリ」の合計となります

キャッシュ済み

5.5 GBは物理メモリ中の「キャッシュ済み」の領域です。ファイルキャッシュとして利用されています。変更済みメモリとスタンバイメモリの合計であることを、既に説明しました。

コミット済み

24.1 GBという数字は「仮想メモリのサイズ」です。この値がコミット可能な最大サイズとなります。これまでに説明したとおり、仮想メモリのサイズは 以下となります。
仮想メモリのサイズ = 搭載メモリのサイズ - ハードウェア予約済みのサイズ + ページングファイルのサイズ

そして、6.1 GB はコミット済みのメモリのサイズです。

コミット済みのメモリは仮想メモリ上に割り当て可能な状態になったメモリです。コミット済みのメモリがすべて物理メモリやページングファイルに実際に割り当てられているわけではありません。コミット済みのメモリに対して読み書きが発生した時点で初めて物理的に割当がおこなわれます。従って「使用中物理メモリのサイズ」と「使用中のページングファイルのサイズ」を足しても「コミット済みのメモリのサイズ」にはなりません。

ページプールと非ページプール

「ページプール」と「非ページプール」はWindows OSのカーネルで利用している物理メモリの情報です。カーネル領域のメモリは使用していないときにページアウトできる「ページプール」とページアウトできない「非ページプール」に分けられます。

以上。

メモリの動作の理解やボトルネック解析については下記の本がおすすめです。

<参考サイト>

コメント

このページは「広告ブロッカー」を使っている人だけに表示される隠しページです。
ここにたどり着いたあなたには特別に当サイトのおすすめ書籍を紹介します。

当サイトのおすすめ書籍ランキング

第5位 達人プログラマー

第4位 マスタリングTCP/IP 入門編

第3位 ネットワークはなぜつながるのか

第2位 リーダブルコード

第1位 プログラムはなぜ動くのか