2012年1月10日火曜日

Windows 7 で タスク スケジューラ を利用して、定期的にメモリを解放する - empty.exe による高速な動作

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

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

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

SnapCrab_NoName_2013-1-13_1-10-23_No-00そのため、定期的にメモリを開放するアプリケーション「めもりくりーなー」を利用している。

ただし、メモリに余裕がないときに、メモリを開放させると、一時的に処理が遅くなる。

追記(2013/03/06)Windows で起動中のアプリケーションに影響を与えにくいメモリの開放 - 軽い動作の Wise Memory Optimizer も参考に。

 

a. empty.exe のインストール

これに対して、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 をインストールした。

  1. 7-Zip を用いて、rktools.exe を展開すると、rktools フォルダが作成される。
  2. rktools フォルダ内にある​ r​k​t​o​o​l​s​.​m​s​i​ を展開した後、empty.exe を取り出す。
  3. empty.exe を C:\Windows\System32 へ移動する。

 

b. empty.exe の実行

empty.exe を実行するには、

  1. スタートメニューより、「コマンド プロンプト」を起動する。
  2. コマンドプロンプトに empty * と入力し、実行する。(アスタリスクを入力するのを忘れずに。)

動作時間が短く、実行中のアプリに、ほとんど影響を与えないようだ。ただし、メモリ解放が効果的に行われているのかよくわからない。

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

 

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

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

タスク実行の設定は、以下の通り。

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

 

a. タスクの作成

スタートメニューより、「タスクのスケジュール」を検索し、タスク スケジューラを起動する。

タスク スケジューラのメニューより、

  • 操作 > タスクの作成

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

SnapCrab_NoName_2013-1-12_12-45-1_No-00

また、「最上位の特権で実行する」にチェックを付けておいた。理由は、empty.exe を管理者権限で実行した時の方が、制約が少なかったため。

 

b. トリガーの設定

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

「新しいトリガー」を以下のように設定した。

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

SnapCrab_NoName_2013-1-12_12-29-34_No-00

遅延時間、繰り返しの間隔については、以下を参考にした。

 

c. 操作の設定

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

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

img_0044

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

スクリプトを実行するには、

  1. タスク スケジューラを開き、左側のペインより、タスクスケジューラ(ローカル) > タスク スケジューラ ライブラリを選択。
  2. 真ん中のペインより、先ほど作成した タスク empty を探し、右クリック > 実行する を選択する。

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

 

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

タスクが実行される度に、ウィンドウが表示されないようにするは、スクリプトを利用する。

メモ帳を開き、以下のスクリプトを書き、ファイル名は empty.vbs として適当な場所に保存した。ここでは、C:\Program Files\empty\ に置いた。

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

スクリプトの書き方は、コマンドウィンドウを表示しないで実行するには - Mookノート を参考にした。

 

タスク スケジューラでタスクを編集

先ほど作成したタスク empty を修正する。

  1. タスク スケジューラを開き、左側のペインより、タスクスケジューラ(ローカル) > タスク スケジューラ ライブラリを選択。
  2. 真ん中のペインより、先ほど作成した タスク empty を探し、右クリック > プロパティ を選択。
  3. 操作」タブで、編集ボタンを押す。
  4. プログラム/スクリプト で、上記の保存したスクリプトを参照して、指定する。引数の追加は、空にした。

img_0037

 

4. タスクの履歴を確認する

SnapCrab_タスク スケジューラ_2013-1-13_1-0-39_No-00予めタスクの履歴を有効にしておく。

タスクのプロパティと履歴を表示する によると、

タスクの履歴は、有効または無効に設定することができます。[操作] ウィンドウで [すべてのタスク履歴を無効にする] または [すべてのタスク履歴を有効にする] をクリックして、タスクの履歴の表示を変更します。

その後、各タスクを選択し、「履歴」タブをクリックすると、履歴が表示される。

作成したタスクは、「ログイン後」に実行されるので、一度ログアウトした後、再ログインし、履歴を確認する。

 

5. スリープから復帰したときに実行する

追記(2013/02/01): スリープから復帰したときに、ブラウザの動作がもっさりする傾向ある。スリープから復帰した直後にも empty.exe を実行したい。

上記で作成したタスク empty のプロパティを開く。

「トリガー」タブを開き、「新規」ボタンを押す。

SnapCrab_新しいトリガー_2013-2-1_1-16-12_No-00「トリガーの編集」ウィンドウにおいて、以下のように設定した。

  • タスクの開始: イベント時
  • 設定
    • ログ: システム
    • ソース: Power-Troubleshooter
    • イベント ID: 1

 

設定値

このトリガーは、システムのログを元にしている。

トリガー によると、

[イベント時]
このトリガーは、特定のイベント エントリがイベント ログに追加されたときにタスクを実行させます。…

基本イベント トリガー設定を選択する場合、特定のイベント ログの 1 つのイベントがタスクをトリガーします。イベントが含まれるイベント ログとイベント発行者名を選択し、イベント ID を指定します。

システムがスリープするときのログを調べるには、以下を参照。

具体的な値は、システムの起動・終了時に記録されるイベントログ – GeekFactory によると、

休止状態から回復
Power-Troubleshooter
1
システムはスリープ状態から再開しました。

 

参考記事

参考サイト