「変更済み」になっていてソフトが使っていないのに消費されている物理メモリを解放する実験(Syncを利用)
投稿日:2017年03月08日
最終更新日:
もくじ
- 「変更済み」の物理メモリとは
- 「Sync」のインストール方法
- 「Sync」の実行方法
「変更済み」の物理メモリとは
Windowsで大量のファイルの読み書きを行ったり、長時間起動したままにしていたりすると、上の画像のように大量のメモリが食いつぶされることがあります。ソフトを終了させても物理メモリ使用率が減らない場合もあります。一体何にメモリが食われているのでしょうか。その答えは、「リソースモニター」を起動すると分かります。
上の画像は私のマシン(Windows7 メインメモリ16GB搭載)でリソースモニターを起動したときのスクリーンショットです。このときには様々なソフトを終了させましたが、実にメモリの半分以上が「変更済み」に持って行かれています。物理メモリが5つに色分けされて表示されているので、5つの分類について説明しましょう。
- ハードウェア予約済み(グレー)…BIOSや周辺機器が予約している領域
- 使用中(緑)…OSやソフト等が使用している領域
- 変更済み(オレンジ)…いずれはディスクに書き込まなければならない(まだ書き込んでいない)領域
- スタンバイ(青)…破棄しても大丈夫な(必要になったらまたディスクから読み込める)データが書き込まれている領域
- 空き(水色)…必要に応じてすぐにデータを書き込める領域
上で説明した5つの領域のうち、ソフトを起動してもいない(終了させた)のに物理メモリが食われている原因となっているものは「変更済み」領域です。この領域のデータはディスクへの書き込みが必要であるにもかかわらず、まだ実際には書き込みが行われていません。通常であれば時間が経つとともに書き込みが行われますが、書き込みが行われるまでは他の用途へ転用することができないため、多くなりすぎると厄介です。今回解説する「Sync」は、この「変更済み」領域のデータをユーザーの指令でディスクに書き込ませ、他の用途へ転用できるようにする(物理メモリを解放する)ものです。
「Sync」のインストール方法
Sync – Windows Sysinternalsから、Syncをダウンロードしましょう。ダウンロードしたら、適当なフォルダにファイルを展開して中身を取り出してください。
「sync.exe」と「sync64.exe」の2つが入っていると思います。32bit環境の人は必ず「sync.exe」を使うようにしましょう。64bit環境の人はどちらを使っても大丈夫ですが、「sync64.exe」のほうが64bitネイティブなのでベターかもしれません。どちらかを任意の場所(こだわりがないならC:\Windows\System32 でもOK)にコピーしてください。なお、コピー先のパスは覚えておきましょう。あとで使います。
最も、C:\Windows\System32に放り込む場合はアクセス許可を要求されるので一手間かかるのですが。
「Sync」の実行方法
コマンドプロンプト編
「Sync」は管理者権限のコマンドプロンプトから実行します。まずはスタートメニューに「cmd」と打ち込んでコマンドプロンプトを引っ張り出し、右クリックして「管理者として実行」から起動します。
管理者権限のコマンドプロンプトを起動したら、基本的にはsync64.exe(sync.exe)までのフルパス(例 C:\Windows\System32\sync64.exe)を入力し、それから半角スペースを挟んで「-r」と入力し、Enterキーを押します。但し、C:\Windows\System32にsync64.exe(sync.exe)を放り込んだ場合は、上画像のようにいきなりsync64.exe(sync.exe)から入力できます。
初回実行時にはライセンス条項が出るので、「Agree」を押します。
バッチファイル編
いちいちコマンドプロンプト起動するのは面倒くさいぜ!という方は、テキストエディタを起動して以下の文字列を写経(コピペ)し、「hoge.bat」(hogeの部分は任意の文字列)という名前でデスクトップにでも保存してください。 [VIM] @echo off C:\Windows\System32\sync64.exe [/VIM] (C:\Windows\System32\sync64.exe の部分は各自でsync64.exe(sync.exe)へのフルパスに置き換えること)
完成したバッチファイルを右クリックし、「管理者として実行」しましょう。sync64.exe(sync.exe)が実行されます。
実行結果
当方の環境では、メモリ解放は多少促進されました。ただ、流石に10GBものデータをいっぺんに書き込んで解放させるというのは流石に無茶振りが過ぎたようです。10GBも変更済みメモリが発生した場合は、素直に再起動したほうが良いと思います。
参考リンク