スワップファイルをなくそう2

  • 投稿日:
  • by
  • カテゴリ:

---追記---
続編→スワップファイルをなくそう4 (うむらうす)
次バージョンのRelease Memory2はこちらにあります。
---追記ここまで---

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

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

  1. Finderの再起動
  2. Dockの再起動
  3. Weekly Maintainance Script実行

内容は前回スワップファイルをなくそうに書いたことそのままだが、三手必要なのがめんどくさいなと思っていた。 そこで今回は、これらをAppleScript一本にまとめ、一手で済むようにした。

ダウンロードはこちらから →ファイルをダウンロード(Release Memory.zip)
左クリック or 右クリックでリンク先のファイルを保存すると、zipファイルがダウンロードされる。 解凍するとRlease Memory.appというファイルができるはず。 これはアプリケーションバンドルなので、ダブルクリックで起動する。 スクリプトエディターで開けばソースを確認可能。

(注:新バージョン出てます! → スワップファイルをなくそう4 (うむらうす)

私はこれをスクリプトメニューに登録して、 MenuMeterで残りメモリを監視しておき、残りが少なくなったら実行、 という風にしているのだが、もう便利でたまらない。

スクリプトメニューに登録しているの図

さて、この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 Scriptsdo shell script in AppleScript を参考にさせてもらった。というかそのまんま。ありがとうございます。


まとめ

  • スワップファイル増殖を防ぐため、解放されていないメモリを解放する作業をAppleScript一発でできるようにしたら、すごく満足
  • エラーの処理とか全く考えてないので、誰かえらい人が改良してくれるとうれしい

---3/15追記)---
本AppleScriptをmutaさんに紹介して頂いた。 こちらの適当記事よりもよっぽど丁寧に解説して頂いた。 私はSafari使っていないので、拡張子が変わるとか全く考慮してなかったので、 補足して頂いて、とても感謝。 私はついカッとなってメモリを2G積んでいるので強烈に解放感を感じるのだが、 環境によってはそんなに効かなかい・・・?

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