Windows など一般的なOSでは「仮想メモリ」という技術を使用してメモリを管理しています。
なぜ?
例えば2Gしか物理メモリがないWindows PCと16G搭載した Windows PCがあるとします。
- 2Gの方は2Gまでしかメモリが使えないのでちょっとしかプログラムを起動できません。2G使ったら終わりです。一方では16G搭載の方は広大なメモリを使用することができます。
- プログラムを作る人も「このPCは2Gまでしか使えない」「このPCは16Gも使える」など意識して作るのは大変です。
- また複数プログラムを起動している場合「プログラムがメモリを大量に使用するのであなたはメモリを使うのやめて」などプログラム同志のやり取りも発生します。
これを解決するのが「仮想メモリ(Virtual Memory)」という機能です。
仮想メモリは太っ腹で、すべてプログラムに一律で「大量のメモリ」を使用させます。そんなことしたらあっという間にメモリが足りなくなる?!と思うでしょう。
この時活躍するのが「仮想メモリ」機能です。仮想メモリでは各プログラムに大量のメモリ(8G)を割り当てます。
プログラムは自分に大量のメモリを使えるように見えてますが、実際に使われる部分しか割り当てません。足りない部分はハードディスクなどのファイルを使用します。(Windowsの場合はpagefile.sys)
この図ではプログラムは「仮想メモリ全体」の広大なメモリを使用することができます。しかし物理メモリに割り当てられているのは一部だけで、残りはハードディスクなどに書き出されています。これをスワップアウトと呼びます。
よく処理が遅くなると、ハードディスクががりがり激しく点滅しますね。これは物理メモリとページファイルの入れ替えが頻繁に発生している可能性が高いとうことです。これをスラッシュイングと呼びます。これが頻発する場合は物理メモリが不足しているので、追加するか起動するプログラムを減らしましょう。
Windows 10ではページファイルのサイズは以下の場所で設定が可能です。「システム」「詳細設定」「パフォーマンス」「詳細設定」「仮想メモリ」
参考:
CPU、メモリ、ディスク、ネットワークのリソースをどのプロセスがどれだけ使用しているか調べる