<また追記>
Snow Leopardに対応しました。
</また追記>
<追記>
今ごろLeopard対応しました。('08/8/20)
</追記>
<更に追記('08 Sep)>
アイコンを作っていただきました。
こちらのページのものも、アイコン付きのものに変更しました。
</更に追記>
先日残り空きメモリ監視AppleScript「Freemem Monitor」作成 (うむらうす) というエントリーを書いた。
空きメモリを周期的に監視し、空きが設定値以下になったらプロンプトを出して、 不使用のメモリを解放するスクリプトを走らせるというものだ。 これにより空きメモリ不足でスワップファイルが増殖して、 OSXの動作がもっさりするのを未然に防ぐのが狙いだ。
すると「なんで自動的にメモリ解放スクリプトを走らせないの?」 という至極もっともな指摘をいただいたた。 そこで、空きメモリ監視スクリプト「Freemem Monitor」と不使用メモリ解放スクリプト「Release Memory」を一体化したスクリプトを作成した。 とりあえず名前は「Freemem Keeper」とする。
Tiger用
ダウンロード:Freemem_Keeper.zip
ダウンロード:Freemem_Keeper(Growl).zip
Leopard用
wakabaさんアイコンver
→Freemem_Set_for_Leopard(wakaba).zip
解凍すると「Freemem Keeper」というファイルまたは「Freemem Keeper(Growl)」、あるいは「Freemem Keeper for Leopard」、「Freemem Keeper for Leopard(Growl)」というファイルができるはず(拡張子は.app)。
(Growl)は、メモリ解放スクリプトの起動時、終了時の通知をGrowlで行うVersionで、
機能は全く同じ。
AppleScriptとGrowlの連携についてはこちらを参考にした。
→AppleScript Support for Growl
<追記>
Freemem_Keeper(Growl)はメモリ値設定のエラーチェックなど文法的な指摘も取り入れ。
いじったものの、実はもはやTigerで動作確認ができない。何かおかしかったらコメント欄までお願いします。
</追記>
使い方はFreemem Keeper.appを好きな場所に置いて(「ホーム/ライブラリ/Scripts」推奨)、 ダブルクリックで起動する。 すると次に下のような画面が現れるので、空きメモリの下限値を設定する。
1MBでも10000000MBでも対応可能だが、0やマイナスの数値を入力された時のことを考えていないのはヒミツだ。対応しました。
キャンセルを押してもちゃんと終了できるようにしました(←してなかったの?)。
あとは放っておけば勝手に1分毎に一度空きメモリをチェックし、 設定値以下になっていたら下の画面を表示し、OKを押すとメモリ解放スクリプトが走る。
紳士的に動作を予告する機能付き。拒否権は与えられない。
ちなみにGrowlだとこんな。
こちらも拒否権は与えられない。
メモリ解放の努力が終了すると、下の画面が表示され、作業の完了を告げる。
紳士的に作業の完了を告げる機能付き。拒否権は与えられない。
Growlだとこんな。
以上がこのスクリプトの全貌だ。
隠し機能とかは特にないので探さない方が吉。
ということで、今回からは「Freemem Keeper」でメモリ解放の役割も果たすため、 手動でメモリ解放をさせたい人はこちらを使って下さいということで。
<追記>
基本的に動作させっぱなしでよいのだが、終了させておいた方がいいケースが存在するようだ。
以下、mutaさんの紹介記事からの引用。
プロセスが全て自動化されているので、ユーザは起動させたらあとは放ったらかしでいい。 注意点はCDなどの焼き焼き中やディスクのバックアップを取っている時にはこれを終了させることを忘れないことだ。 そういう作業中にこれが作動されると、CDはお釈迦、バックアップも最初からやり直しになる。
またSafariなどドックにしまった状態で、これが作動するとそれ以降Safariが操作不能になる不具合が起きる。 これはこのスクリプトのせいというよりは、Safari3とシステムの相性の問題だと思われる。 Freemem Keeperとは関係無しに、「隠す」動作の後ウインドウそのものが操作不能になる不具合が頻発するからだ。
ということなので、必要に応じて終了させてやって欲しい。 (ちなみにわたしはバックアップにDeja Vuを使っているが、 バックアップ中に発動しても特に問題なかった。) 他にも不具合が起きるケースはあると予想されるので、 見つけた方はコメント等で連絡いただけるとありがたい。
対応策としては、mutaさんも書かれているようにFreemem Monitorを使えば勝手に発動はしない。
使い分けて欲しい。
</追記>
以下、ソースを書く。興味がある人はどうぞ。
まとめ
- 空きメモリを監視し、設定値以下になったらメモリ解放を試みるAppleScript「Freemem Keeper」を作成
- これ一つ走らせておけば、残りメモリに目を光らせていなくてよくなるので結構便利
- といっても特定のアプリのメモリが肥大化してしまうと、あまりメモリを解放できなくなるので、そういうときはそのアプリを一度終了する
まだ完成していない部分もあると思うので、フィードバックをお願いしたい。 あと、やっていることはシステムメンテなので特に害はないと思うが、 まぁご利用は自己責任ということで・・・
ということで皆さまご機嫌よう。
追記)
各所で紹介して頂いた。ありがとうございます。m(_*_)m
自分では補足しきれていないところもあるので、参考にされたい。
- Macの手書き説明書 | Freemem Kepper>
- soundscape out - Freemem Keeper
- muta's mac scribbling - OS運用記録9月4
発動させない方がいい状況を紹介してくださっている。 - D.I.'s Memorandum | 空きメモリ確保AppleScriptについて
FinderとDockの再起動を外すHackをされている。すみません全てには手が回りません・・・。 - glad design blog | 空きメモリ確保AppleScript「Freemem Keeper」