スワップファイルをなくそう4 - Release Memory2 (for Tiger)

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

'08 7/3追記)
Release Memory2に、今更ながらGrowl通知版を公開。作ってなかったと気付いておらず。
あとLeopard対応版作りました。
Release Memory for Leopardを作ってみた (うむらうす)

内容
・Release Memory をバージョンアップし、Release Memory2を作った
・「アクセス権の修復」を行うことでも、inactiveなメモリが解放されるので、 その方法を用いるAppleScript
・Script実行時間は格段に短くなった
・DashboardのCache削除機能も追加した
・対応OSはTigerまで

ダウンロード:
Release Memory2.zip
Release Memory2(Growl).zip


以下、詳細説明。

スワップファイル遊撃隊隊員の私です。
以前、スワップファイルができまくって動作がもっさりするのを防ぐため、 解放されていないinactiveなメモリ(リークしている?)を解放するAppleScriptを作ったところ、 各所でいろいろとコメントを頂いた。ありがとうございました。
スワップファイルをなくそう2 (うむらうす)

このスクリプトが何をしているかというと、

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

を一気に行うということだった。

これはこれで便利に使っていたのだが、先日こちらのエントリーのコメント欄で、 thanksさんに新しいメモリ解放の方法を紹介していただいた。 (後日こちらでも記載されているのを確認した→Apple - Support - Discussions - inactive memory ...

その方法は至って簡単で、「起動ディスクのアクセス権を修復」すること。シンプルだ。 試しにアクセス権修復をやってみると、inactiveで解放されていないメモリ (リークしているメモリと思われる)が確かに解放される。 不思議だが、効果あり。

ということで、このアクセス権の修復によるメモリ解放のAppleScriptも作ってみた。 (参考:macosxhints.com - Run Repair Permissions via an AppleScript

ダウンロード:
Release Memory2.zip
Release Memory2(Growl).zip

上のリンクを左クリック or 右クリックで「リンク先を保存」。 解凍すると(ダブルクリック、あるいはStaffIt Expanderなどを利用)、AppleScriptが生成します。 アプリケーション形式なので、ダブルクリックで起動します。 スクリプトエディターで開けば、ソースが見れます。

以下変更点、相違点など。

  • 所要時間が短くなった
    Weekly Maintainance Scriptでは実行に10分近くかかるのだが、アクセス権修復は1,2分で終わる。圧倒的に後者が早い。
  • FinderとDockの再起動はおまじないとして残しておいた。
  • オマケとしてmutaさんの提案にお応えして、 DashboardのCacheの削除プロセスも追加。
    (参考:macosxhints.com - 10.4: Speed up Dashboard by clearing out its cache)
  • 従って、Scriptの流れは 1. Finder再起動→2.Dock再起動→3.Dashboard Cache削除→ 4.起動ディスクのアクセス権修復
  • MXanadu62さんの指摘を受け、アクセス権修復の管理者権限を省略
  • メモリ解放タイミングが変わった
    Weekly Maintainance Scriptでは、実行後数秒してからメモリが大きく解放され、その後は空きメモリは変化しないままScriptは動き続ける(Locate database, whois databaseを再構築している)。 一方アクセス権の修復では、実行後しばらくは、空きのメモリはむしろ数十MB減るのだが、 終了間際に空きメモリがガサッと増える。(と思ったけどすぐ減るかも。よくわからない。)

ということで、個人的にはこっちの方が早く済むのでオススメ。


まとめ

・「アクセス権の修復」を行うことでも、inactiveなメモリが解放されるので、 その方法を用いるAppleScriptも作った
・Script実行時間は格段に短くなった
・DashboardのCache削除機能も追加した

ということで、新しいものが好みの人は、こちらをどうぞ。

<追記>
各所で紹介して頂いた。ありがとうございます。
わかばマークのMacの備忘録 : Release Memory2  大変詳しく説明してくださっている(ここよりよっぽど詳しい)。参照されたい。
muta's mac scribbling
</追記>

以下ソース。興味のある方はどうぞ。


-- 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"


--Delete Dashboard cache
do shell script "rm -rf ~/Library/Caches/DashboardClient/*"


-- Run Repair Permissions via an AppleScript - macosxhints.com
-- http://www.macosxhints.com/article.php?story=20030120061404240
-- MXanadu62さんの指摘により管理者権限省略
do shell script "diskutil repairPermissions /" 


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