<追記>
勝手にRelease Memoryが走る新バージョンFreemem Keeperを作成しました。こちらも合わせてご利用下さい。
→空きメモリ確保AppleScript「Freemem Keeper」作った (うむらうす)
</追記>
<また追記>
Snow Leopardに対応しました。
</また追記>
<更に追記>
今ごろLeopard対応しました。ついでにGrowlにも対応させました。('08/8/20)
</更に追記>
<また更に追記('08 Sep)>
アイコンを作っていただきました。
こちらのページのものも、アイコン付きのものに変更しました。
</また更に追記>
以前、解放されていない不使用のメモリを解放することで、
スワップファイルが作られにくくしようというエントリーを書いた。
→スワップファイルをなくそう4 (うむらうす)
ここで、解放されていない不使用メモリを解放するAppleScript「Release Memory2」 を作成し、アップしたのだが、これは手動で気付いたときに実行するようにしかなっていなかった。 つまり、空きメモリが減ってきたことを自分で察知して自分で起動する必要があった。 例えば、私の場合は、MenuMetersで空きメモリを視界の端でにらみつつ、 危なくなってきたら上記のRelease Memory2を走らせていた。
しかしうっかり残りメモリが減っているのを見逃してしまうと、 隙をついてスワップファイルが3つ4つ作られてしまったりする。 これではせっかくメモリを解放できるようになっても、意味がない。 目視で観察していてもダメだ。機械に監視させねばならぬ。
ということで、コメントで紹介頂いたMXanadu氏作成のAppleScript「Memory Statistics」をベースに、 残りの空きメモリが少なくなってきたら警告を発し、 ついでにRelease Memory2と連携して起動させるAppleScriptを作ってみようと思った。
で、作った。(協力:MXanadu氏)
Tiger用
ダウンロード:Freemem_Monitor.zip
Leopard用ダウンロード:
wakabaさんアイコンver
→Freemem_Set_for_Leopard(wakaba).zip
Edm2さんアイコンver
→Freemem_Monitor_for_Leopard(Edm2).zip
zipファイルを解凍すると、「Freemem Monitor」とか他のものも入っているので、好きなものをどうぞ。(Growl)と付いているものはGrowlで通知するもの、ついていないものはDialogで通知するもの。
<追記>
複数置いてあるが、アイコンが違うだけで、効果は同じ。
お好きなものをお使いください。
</追記>
使い方:
1.Freemem Monitorを起動
2.空きメモリが何MB以下になったら警告するかを設定
3.あとは放っておく。Freemem Monitorは1分置きに空きメモリをチェックし、
設定容量以下になったら以下のようなプロンプトを表示する

選択肢「Run!」「No」「Quit」はそれぞれ、Release Memoryを呼び出す(監視も続行)、
呼び出さない(監視は続行)、監視をやめFreemem Monitorを終了する、という動作。
まだRelease Memor終了後にエラーが出たりと完成していないが、 とりあえずさらしてみる。 コメント等大歓迎。
ソースは以下の通り。MXanaduさんありがとうございます。
set temp_delim to AppleScript's text item delimiters --Free memoryリミット値(MB)の設定 --propertyでなくても、ハンドラ内でglobal宣言すればOK set alarm_size to text returned of (display dialog "Input the limit memory size(MB)." default answer "200") --リミット値をページ単位に換算 (1024^2)/4096=256 set alarm_pages to alarm_size * 256 --監視間隔(秒)の設定 property waiting_interval : "60" on idle --Mach Virtual Memory Statistics(vm_stat)から空きメモリページ数を取得 global alarm_pages, alarm_size set AppleScript's text item delimiters to return set vm_stats to do shell script "vm_stat | grep Page" set free_mem to text item 1 of vm_stats set AppleScript's text item delimiters to " " set free_size to (last text item of free_mem) as number --アラーム処理 if free_size is less than alarm_pages then set Btn to (display dialog "Free Memory is less than " & alarm_size & "MB!" & return & "Run Release Memory script?" buttons {"Run!", "No", "Quit"} default button 1) if button returned of Btn is "Run!" then try tell application "Release Memory2" activate end tell on error msg number errno activate display alert msg message "Error Number : " & errno end try end if if button returned of Btn is "Quit" then tell me to quit end if return waiting_interval end idle set AppleScript's text item delimiters to temp_delim
何分おきというように周期的に動かすには、スクリプト保存時に設定が必要。

「実行後、自動的に終了しない」をチェックするのがポイント。
まとめ
- 目視で空きメモリをチェックしていると、うっかり見逃しがちなので、プログラムに監視させることにした。
- そのプログラムからRelease Memoryを起動できるようにした。
- まだエラーが出るのでいつか直す。
- Growlと連携とかできそうなので、気が向いたらするかも
<追記>
スクリプトを紹介して頂いた。まいどどうもです。m(_*_)m
muta's mac scribbling - OS運用記録9月4








コメント (15)
今更な感が漂いますが、このFreemem Monitorの中身のRelease Memory2はleopard対応型でしょうか??
投稿者: KKC | 2008年8月19日 21:33
日時: 2008年8月19日 21:33
KKCさん、どうもです。
現状の中身のRelease Memory2は、Leopardには対応していません。
中身見てみたらできそうなので、少々お待ちください。
Freemem Keeperと共にLeopard対応させちゃおうと思います。
それまではRelease Memory for Leopardの方をご利用ください。
投稿者: haru | 2008年8月20日 00:58
日時: 2008年8月20日 00:58
haruさん
返信ありがとうございます。
Leopard対応のFreemem Keeper、楽しみに待っています。
投稿者: XXC | 2008年8月20日 17:37
日時: 2008年8月20日 17:37
XXCさん
ということで、Freemem Monitor、Freemem Keeper共にLeopard対応させました。
微妙にお名前が変わっているようですが、ご本人ですよね。
投稿者: haru | 2008年8月21日 01:53
日時: 2008年8月21日 01:53
haruさん
素早すぎる対応、少々びっくりしています。
早速使わせていただきます。
自分も名前が変わっている事をharuさんの指摘で気づきました・・・。確かに本人でした。
投稿者: KKC | 2008年8月21日 09:34
日時: 2008年8月21日 09:34
haruさん
連投申し訳ありません。
早速leopard対応版をダウンロードして使おうと思いましたら、フォルダに「Freemem Monitor for Leopard.app」しか入っていませんでした。こんなものかと思い、とりあえず使ってみようと思い、起動してみたところエラーが返ってきました。
お手数ですが解決法などをお教えください。
投稿者: KKC | 2008年8月21日 09:51
日時: 2008年8月21日 09:51
KKCさん
どんなエラーでしたか?
一応心当たりのある部分は直しておきました。まだだめでしょうか・・・
投稿者: haru | 2008年8月22日 00:39
日時: 2008年8月22日 00:39
haruさん
きちんと症状も書かずに訪ねてしまい申し訳ありません。
症状としましてはFreemem…を起動するとまず、
The variable temp_delim is not defined.
Edit OK
といったダイアログが現れ、OKを押しても数分後にまた現れるといった症状です。
機能としては問題はなさそうですが、上記のような症状が現れます。
無視しても大丈夫なものでしょうか??
投稿者: KKC | 2008年8月22日 02:08
日時: 2008年8月22日 02:08
KKCさん
いえ、無視しない方がいいと思います。こちらでも再現しました。Freemem Monitorの方ですよね?
ちょっと手直ししてみました。試してみていただけますか?
投稿者: haru | 2008年8月22日 23:53
日時: 2008年8月22日 23:53
haruさん
最新版、試してみました。どうも同じような結果が帰ってきますね。
確認なのですが、/usr/library/Scriptsに「Release Memory for Leopard.scpt」と「Freemem Monitor for Leopard.app」を放り込んで「Freemem Monitor for Leopard.app」を起動、という方法であっていますか?
投稿者: KKC | 2008年8月23日 21:49
日時: 2008年8月23日 21:49
KKCさん
いろいろ気付いてまたアップデートしました。これで大丈夫かと思います。お手数ですが再度試してみてください。
ちなみに、Freemem Monitor for Leopard.appは単体で動作します(Release Memory for Leopardの機能を含んでいます)。他のものはなくても大丈夫です。
投稿者: haru
|
2008年8月23日 22:53
日時: 2008年8月23日 22:53
haruさん
最新版、ダウンロードして試してみました。
前回のようなエラーも帰ってこず、何の問題もなく動いています。
何度も対応していただき、ありがとうございました。愛用させていただきます。
投稿者: KKC | 2008年8月24日 19:19
日時: 2008年8月24日 19:19
KKCさん
よかったー。
何度も手間をかけさせてしまいすみませんでした。私自身もRelease Memoryの方を使っていたのですが、今回作ったのでMonitorの方を使ってみてます。Keeperよりも自分で起動タイミングを選べるこちらの方がいいですね。
投稿者: haru
|
2008年8月24日 21:35
日時: 2008年8月24日 21:35
haruさん
本当にありがとうございました。
ところで、一つうまくいけば欲が出るのか、可能であればのお願いがあります。
Monitor、常駐させることが多いと思いますので、スクリプトのアイコンではいささか色気がないように思います。
これほどの性能を持つMonitorですので専用のアイコンでも作成してみてはいかがでしょうか。
投稿者: KKC | 2008年8月25日 17:43
日時: 2008年8月25日 17:43
KKCさん
いえいえ、こちらこそ適当な公開で手間を取らせてしまいすみませんでした。
で、アイコンについてですが、確かに私も専用のがあったらかっこいいなぁと思うのですが・・・どうやってつくんの?的な感じです。
とりあえず誰か作ってくださる神のような人を募ってみることにします。無反応だったら・・・
投稿者: haru
|
2008年8月25日 23:04
日時: 2008年8月25日 23:04