2012年1月10日火曜日

Windows 7 で タスク スケジューラ を利用し、定期的にメモリを解放する

1. empty.exe によるメモリの開放は軽くて早い

たくさんのアプリケーションを開くと、メモリの使用量が増え、PC の処理がもたつく。

ブラウザにアドオンを詰め込み、仮想化ソフトを起動。開発環境を立ち上げ、同時に別のブラウザで動画を見ながら、バックグラウンドで何個もプロセスを常駐。これにより、かなりのメモリを消費する。

そのため、定期的にメモリを開放するアプリケーション「めもりくりーなー」を利用している。ただし、メモリに余裕がないときに、メモリを開放させると、一時的に処理が遅くなる。

これに対して、empty.exe は、動作の軽いメモリ開放ソフト。

最強安全メモリ開放ソフト(マイクロソフト) | Windows XP/Vista/7の裏技 によると、

「​e​m​p​t​y​.​e​x​e​」​こ​の​ソ​フ​ト​は​ほ​か​の​メ​モ​リ​開​放​ソ​フ​ト​と​は​違​い​、​強​制​的​に​開​放​す​る​こ​と​は​あ​り​ま​せ​ん​の​で​安​全​で​す​。 し​か​も​、​効​果​抜​群​!
W​i​n​d​o​w​s​ ​S​e​r​v​e​r​ ​2​0​0​3​ ​R​e​s​o​u​r​c​e​ ​K​i​t​ ​T​o​o​l​s ​こ​れ​を​ダ​ウ​ン​ロ​ー​ド​し​てW​i​n​R​A​R な​ど​で​解​凍​し​ま​す​。
解 ​凍​し​た​中​に​「​r​k​t​o​o​l​s​.​m​s​i​」​が​あ​る​の​で​、​こ​れ​も​解​凍​す​る​。​(​右​ク​リ ​ッ​ク​で​プ​ロ​グ​ラ​ム​か​ら​開​く​>​解​凍​ソ​フ​ト​を​選​択​>​「​e​m​p​t​y​.​e​x​e​」​を​取​り ​出​す​。​)
面​倒​な​ら​イ​ン​ス​ト​ー​ル​し​て​「​e​m​p​t​y​.​e​x​e​」​を​取​り​出​し​て​も​構​い​ま​せ​ん​。
「​e​m​p​t​y​.​e​x​e​」​を​ ​C​:​¥​W​I​N​D​O​W​S​¥​s​y​s​t​e​m​3​2​ ​の​中​に​入​れ​ま​す​。

これに従い、empty.exe を指定の位置におき、試しに empty.exe をコマンドプロンプトで実行してみた。その結果、動作時間が短く、実行中のアプリに、ほとんど影響を与えないようだ。ただし、メモリ解放が効果的に行われているのかよくわからない。

empty.exe を実行した時のメモリの使用状況を見ていると、Firefox のアドオン Memory Fox が動作しているときに似ているような気がする。

 

2. タスク スケジューラ で定期的に empty.exe を実行する

タスク スケジューラを使い、empty.exe を定期的に実行させることにした。

設定は、以下の通り。

  1. ログオンしてから、1時間後にタスクを実行する
  2. その後、定期的に1時ごとにタスクを実行する。

タスク スケジューラを起動し、

  • メニューより、操作 > タスクの作成。

「全般」タブにおいて、適当にタスクの名前を付けた。ここでは `empty’ とした。

「トリガー」タブにおいて、新規ボタンを押し、新しいトリガーを作成。

  • タスクの開始を「ログオン時」
  • 詳細設定
    • 遅延時間を「1時間」に指定
    • 繰り返し間隔を「1時間」に設定
    • 継続時間を「無期限」に設定

img_0043

「操作」タブにおいて、新規ボタンで、新しい操作を作成。

  • 操作を「プログラムの開始」
  • プログラム/スクリプトを empty と指定
  • 引数の追加で `*’ を指定

img_0044

これで、次回のログインから、タスクが有効になる。

ただし、この方法では、プログラムが実行される度にウィンドウが一瞬表示される。

 

3. VBS を利用し、タスクの実行時にウィンドウを表示させない

タスクが実行される度に、ウィンドウが表示されないようにしたい。

コマンドウィンドウを表示しないで実行するには - Mookノート を参考に、以下のスクリプトを書き保存した。ファイル名は empty.vbs とした。

CreateObject("WScript.Shell").Run "empty *", 0

 

タスクスケジューラでタスクを編集
  1. タスク スケジューラを開き、タスク スケジューラ ライブラリを選択。
  2. タスク empty を探し、右クリック > プロパティ を選択。
  3. 「操作」タブで、編集ボタンを押す。
  4. プログラム/スクリプト で、上記の保存したスクリプトを参照して、指定する。引数の追加は、空にした。

img_0037