◆ 物理メモリ+ページファイル=仮想メモリ
◆ プライベート+共有=ワーキングセット=物理メモリ上にあるメモリ
◆ コミットサイズ = プロセスが確保しているメモリ(ページファイルも含む)
◆ ワーキングセット≦コミットサイズ とは限らない
  ◆ 共有ワーキングセットでプロセス間で共有しているサイズでずれる

表示されるのがいろいろあって結局よくわかってないのでまとめ

プロセス・詳細タブ



タスクマネージャの「詳細」 7 以前だと「プロセス」 で表示される値

  • プライベートワーキングセット
  • 共有ワーキングセット
  • ワーキングセット
  • コミットサイズ

この 4 つが基本の見るところです
ピークとデルタもありますが 今使ってる値を知りたい時には使わないです

ピークはその名の通り最大値です
起動してから今までで最大になった値を覚えています

デルタもそのまま差分です
今が上昇中なのか減少中なのか変化なしかを知りたい時に使います

サマータイヤ リア左右セット■適合詳細要確認■代引き不可■ 225/40R18 92Y XL ハンコック ベンタス V12evo2 K120 レイズ 2012/4 ボルクレーシング G25 7.5-18 タイヤホイール4本セット

物理メモリ上に確保されてるメモリをワーキングセットと呼ぶらしいです

なので「ワーキングセット」には物理メモリ上に置かれているサイズが表示されています
ココが少なくてもページファイルにスワップしているものがあると 実際に必要としているメモリは大きいです

プライベートワーキングセット・共有ワーキングセット

プライベートワーキングセットと共有ワーキングセットを足すと
ワーキングセットの値になります

プライベートと共有に分かれるわけですが 違いは共有できるかどうかです
そのプロセスに当てられたメモリでも 他のプロセスと共有できるものか そのプロセスでだけ使用できるものかの違いです

Process explorer では「共有ワーキングセット」は「WorkingSet Shareable」になっていて その中で共有されている量を表す 「WorkingSet Shared」 というのもあります

コミットサイズ

プロセスが必要としている全メモリサイズです
Process explorer での表示は 「Private Bytes」

ワーキングセットでは実メモリ上にあるものだけでしたが HDD にスワップされているのも含めてプロセスが使っている全体です

それだと

ワーキングセット < コミットサイズ

が成り立つと思いますが 実際はそうじゃないものがあります
上の画像だと Chrome を始めそうじゃないもののほうが多いようにも見えます

原因は共有メモリで他のプロセスと共有しているところは コミットサイズから除外されるからです
コミットサイズのほうが小さいものをみると どれも共有メモリの割合が多くなってると思います

物理メモリの内訳

リソースモニターや Windows8 以降のタスクマネージャーのパフォ―マンスで確認できる横の帯グラフ



  • ハードウェア予約済み
  • 使用中
  • 変更済み
  • スタンバイ
  • 空き

の 5 つがあります

ハードウェア予約済や使用中 空きはそのままでしょうけど 変更済みとスタンバイはいまいちイメージがつきにくいです

スタンバイは 「キャッシュやアクティブに使用されないコードが含まれる」らしいですが 簡単に言うとディスクキャッシュです
メモリが必要になったらここを使えますが 同じファイルを読み込むことがあったときに ここにデータが残っていればもう一回ディスクアクセスしなくてもここのデータを使えば すでにメモリ上にあるので高速に読み取れるという仕組みです

変更済みは逆で ファイルへ書き込んだときにすぐにディスクに書き込まずメモリ上に貯めておいて後でまとめて書き込むことでディスクアクセスを減らすというものです

ただ ここに残ってると書き込まれていないみたいで不安です
すぐに 0 になればいいのですが 数百MB 残ったままで待っていても減らないしで ちゃんとシャットダウンできずに強制終了することになった場合ってここに残ったデータが消えてしまいそうに思えます

また 下にある 利用可能は 「スタンバイ+空き」 キャッシュ済みは 「変更済み+スタンバイ」 です
なので合計はその上の 2 つを足しているわけじゃないです

コミット済み・コミットチャージ

* このセクションは 2018/09/24 に修正しました
  詳細はコメントを参照してください

「現在値/最大値」

の表示です
全部のプロセスを合わせた 必要になった合計メモリサイズです
物理メモリとページファイルを合わせた使用量になっています

最大値は名前通りここまでメモリを確保できるという最大サイズです
ページファイルの設定で「すべてのドライブのページングファイルのサイズを自動的に管理する」が有効になっているとページファイルは最初は小さな値で必要になったら増やしていくので最大値も増えることがあります
一度ページファイルとして確保されたものは解放されないらしく再起動しない限りは最大値が減ることはないようです

また Peak 値という OS が起動してから一番メモリを消費したときの値を示すものもあるのですが 現在のタスクマネージャでは確認できないようです
Peak 値を見たい場合は Process Explorer で 「System Information」 を開いて 「Memory」 タブの情報見れば確認できます
微妙にずれてるのは KB や GB 計算で 1024 を使ってるからです

私の環境の例では Process Explorer の Limit は 9,650,228 (K) でタスクマネージャのコミット済み最大値は 9.2 GB でした
9,650,228 / 1,024 / 1,024 = 9.2031746
あってますね

私はタスクマネージャにでてるのは最大値ではなく Peak 値の方だと思ってたのですが たぶん原因は↑の計算です
別の PC を見ると偶然こういう感じの値になってました

System Explorer ⇩
Limit: 15,309,210
Peak: 14,604,828

タスクマネージャ⇩
14.6 GB

146 まで一緒なので Peak 値のことなんだなって思いそうですが 1024 として計算すると
14.6 * 1,024 * 1,024 = 15,309,210
になるんですよね

コレに加えて 最大値ならメモリを使っても増えないと思うのにページファイルが可変サイズ(増加のみ)なのでメモリを使うと増えるということから Peak 値の方だと勘違いしてました

仮想メモリ

物理メモリに入らなくて ディスクにスワップした いわゆるページファイルのこと……
だと思っていたのですが Windows での定義はちょっと違っていました

物理メモリ + ページファイル

の OS がメモリとして扱える全体のこと なようです