BFT名古屋 TECH BLOG

日々の業務で得た知識を所属するエンジニアたちがアウトプットしていきます。

【Windows】メモリ使用率を定期的に下げて限られたリソースを有効に使おう!

はじめに

こんにちは!BFT名古屋支店・インフラ女子(?)のやまぐちです。

ここ2か月くらいブルースクリーンでPCが突然落ちることがあります。頻度は1,2週間に一回なのですが、あまりにもショック過ぎてブルースクリーン中に表示されるエラーコードを確認する心の余裕もありません。

原因はまたちゃんと追究するとして私が通常使っているPCはメモリが4GBと少な目です。ブラウザのタブはすぐに閉じる、不要なアプリケーションは停止する、そういった対応をしていても基本的にメモリの使用率が80~90%となってしまうので、定期的にメモリを解放する仕組みを導入しようと思います。

ちなみに所要時間は10分くらいです!

メモリを自動的に開放する

今回やることを図に表すと以下のような感じです。直接exeを実行せずにvbsを経由することで、実行時にバックグラウンドで実行し、プロンプトが起動しないようにするためです。
f:id:bftnagoya:20210301152345p:plain

STEP1.ツールをダウンロード

このツールは元々Microsoft純正のツールだったのですが現在は削除されており有志で上げてくれる方のDropboxからダウンロードすることになります。アクセス先で「ダウンロード」を押してください。

Dropbox - rktools.exe - Simplify your life

STEP2.インストールする

ダウンロードした「rktools.exe」を実行すると、以下のポップアップが表示されました。元が純正であってもすでにMicrosoftからは削除されたツール。自己責任でお願いします。

f:id:bftnagoya:20210226193450p:plain:w500
さすが削除されたツール…

基本的にそのままNextでインストールして構いませんが、インストールパスから必要なEXEを別の場所に持っていくため、ここでパスをコピーしておくとよいです。

f:id:bftnagoya:20210226194209p:plain:w500
64bitの場合のインストールパス

インストール先の「C:\Program Files (x86)\Windows Resource Kits\Tools」から「empty.exe」を「C:\Windows\System32」へコピーしてください。

STEP3.実行用VBS作成

実行用のVBSを作成し「C:\Windows\System32」に保存します。ファイル名は任意で構いません。ここでは「empty.vbs」としました。

Set epy = CreateObject("Wscript.Shell")
epy.run "cmd /c empty.exe *",vbhide

STEP4.10分に一回自動実行させる

タスクスケジューラの機能を使います。検索で「task」と入れて表示されるタスクスケジューラを押します。

f:id:bftnagoya:20210226194813p:plain:w500
ファイルを指定して実行の場合は「taskschd.msc」で

右ペインの[ 操作 ]-[ タスクの作成 ]からタスクを作成します。システムタスクと一緒にするのは気持ちが悪いので[ UserTask ]というフォルダを作成してその中でタスクを作成しています。

[ 全般 ] タブ
名前は任意で付けてください。ここでは [ ReleaseMem ] としました。「最上位の特権で実行する」にもチェックを入れます。

f:id:bftnagoya:20210226214612p:plain:w500
全般タブの設定

[ トリガー ] タブ
繰り返し間隔を10分、継続時間を無制限にします。繰り返し間隔は実行結果を見ながら調整していくといいと思います。

f:id:bftnagoya:20210226214459p:plain:w500
繰り返し間隔は実行結果を見て調整

[ 操作 ] タブ
STEP3で作成したVBSを指定します。

f:id:bftnagoya:20210301141034p:plain:w500
VBSを実行するようにする
  

実行できていることを確認する

タスクマネージャを起動し [ パフォーマンス ] タブを開きます。メモリを見ると85%ほど使用しています。

f:id:bftnagoya:20210301152617p:plain:w450
メモリ使用率が85%

タスクスケジューラの管理で登録したタスクの「次回の実行時間」を見て実行のタイミングを確認しておきます。そのタイミングでもう一度タスクマネージャで見てみると・・・

f:id:bftnagoya:20210301144443p:plain:w450
メモリ使用率が15%ほど低下した

うまくいきました。実行時には15%ほどメモリ使用率が低下しています。

終わりに

一昔前はデフラグツールもたくさんあってディスクを効率的に使うことにも一生懸命対策していました。近年メモリもディスクも大容量になりましたが私の使っているSarfaceなどの超薄型PCだとメモリやディスクの増設ができず今あるもので何とかうまくやっていくしかありません。
ディスクはSSDなので仮想メモリを設定しても効果が高いかもしれないですね。リモートワークを快適にできるよう、作業用のPCを今後も使いやすくしていきたいと思います!