2007年5月21日月曜日

OS-Xのメモリ管理

http://soap.s216.xrea.com/umu/mt/archives/001117.html

http://soap.s216.xrea.com/umu/mt/archives/001141.htmlより引用



私はスワップファイル増殖撲滅協会自称会員なので、 スワップファイルをなくそうという記事を以前書いた。

簡単に言うと、以下の作業を行うことで、解放されていないメモリが大幅に解放されるため、スワップファイルにページアウトせずに踏ん張れるようになって、少し幸せになれるというものだ。特にメモリ喰らいのFirefoxを使っている人には効果大でしょう。 (Firefoxのメモリリーク抑制についてはこちらも参照されたい
→Firefoxのメモリ食いを小食にする (うむらうす))。

Finderの再起動
Dockの再起動
Weekly Maintainance Script実行
このそれぞれの作業の実行方法も書いたが(MainMenuを使うと便利)、三手必要なのもめんどくさいなと思っていた。そこで、これらをAppleScript一本にまとめ、一手で済むようにした。

内容は前回スワップファイルをなくそうに書いたことそのままだ。私はこれをスクリプトメニューに登録していて、 MenuMeterで残りメモリを監視しておき、残りが少なくなったら実行、という風にしているのだが、もう便利でたまらない。
→ファイルをダウンロード(Release Memory.scpt)
注)Safariでダウンロードした場合は拡張子が変わる。その場合の対応はmutaさんの記事を参照されたい(他人任せですみません)。

スクリプトメニューへの登録の仕方はここに詳しく書いたので参照のこと。
→NBA TVのvideoを手軽に楽しむ (うむらうす)

さて、このAppleScriptを実行すると、FinderとDockの再起動は勝手に進むが、 Weekly Maintenance Scriptの実行には管理者権限がいるため、パスワードが要求される。ファイルの内容は下に書いてあるので、「なんでパスワードがいるの?」と心配になる人は、読んでから実行すると良いだろう。

ということで、以下ソースと説明。(3/18 終了メッセージ追加)

(*
「KOTOERA | AppleScript | Finderの再起動」より
http://www.geocities.jp/aqua7bowler/applescript/relaunch_finder.html
*)

-- Finder再起動
tell application "Finder"
quit
delay 1
activateFinder() of me
if exists Finder window 1 then
activate
set windowBounds to (bounds of Finder window 1)
set theFolder to target of Finder window 1
close Finder window 1
open theFolder
set bounds of Finder window 1 to windowBounds
end if


end tell


on activateFinder()
try
tell application "Finder" to activate
on error
activateFinder() of me
end try
end activateFinder
-- Finder再起動ここまで


-- Dock再起動
do shell script "killall Dock"
-- Dock再起動ここまで

-- Weekly Maintenance Scriptを管理者権限で実行
-- http://www.thexlab.com/faqs/maintscripts.html
-- http://developer.apple.com/jp/technotes/tn2065.html
do shell script "periodic weekly" with administrator privileges
-- Weekly Maintenance Scriptを管理者権限で実行ここまで

display dialog "Release Memory 終了しました!" buttons {"OK"}

書いてあるように、Finderの再起動はKOTOERAさん の 「AppleScript | Finderの再起動」を、 Weekly Maintenance Scriptの管理者権限での実行は Running Mac OS X Maintenance Scriptsと do shell script in AppleScript を参考にさせてもらった。というかそのまんま。ありがとうございます。


--------------------------------------------------------------------------------

まとめ

スワップファイル増殖を防ぐため、解放されていないメモリを解放する作業をAppleScript一発でできるようにしたら、すごく満足
エラーの処理とか全く考えてないので、誰かえらい人が改良してくれるとうれしい
3/15追記)
本AppleScriptをmutaさんに紹介して頂いた。こちらの適当記事よりもよっぽど丁寧に解説して頂いた。私はSafari使っていないので、拡張子が変わるとか全く考慮してなかったので、補足して頂いて、とても感謝。実は私はメモリを2G積んでいるので強烈に解放感を感じるのだが、環境によってはそんなに効かなかい・・・?

私の経験上、Swapfileが4つとかになると、絶望的に全ての動作が遅くなるのだが、それを私の環境で防げていることは間違いない。
追記終わり)

2 件のコメント:

茶尾 さんのコメント...

あとこんなのもあった。
http://netafull.net/macsoft/020149.html

IFreeMem
ダウンロード先
https://www.blogger.com/comment.g?blogID=4225169877839003249&postID=8804334403276117763




リンク先の入力はアドレスがいいみたい^^

茶尾 さんのコメント...

最後の一行は
くかっこa href="アドレス"とじくかっこアドレスくかっこ/aとじくかっこ
にしたのだが、リンク表示になってしまった。