« ゾンビーズかっこいい! | メイン | スワップファイルをなくそう3 »

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

- MacOSX

---追記---
続編→スワップファイルをなくそう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つとかになると、絶望的に全ての動作が遅くなるのだが、 私の環境ではそれを防ぐことができていることは間違いない。
---追記終わり---

web拍手とは

トラックバック

このエントリーのトラックバックURL:
http://soap.s216.xrea.com/umu/mt/mt-trackback-script.cgi/1138

コメント (10)

「ハル」って良い名前ですね。:

私もスワップファイルの事で再起動する事が多いので、こちらの情報のお陰で
良い春を迎えられそうです。
OS X をバージョンUPした為、MainMenuが10.4.9 にまだ対応していないので、
MainMenuが対応次第試してみたいと思います。
最近、こちらのサイトを知って、ブックマークに入れてチェック
させていただいております。
今までハルさんの事を星のオオジ様だ思っていましたが、
プロフィールの「テキストサイト管理人の...」ところを読んで
ビミョ〜感が世界を制しました。
Web拍手に「なるほど!」と思ってボタンを連打しましたが、嫌がらせに
なってない事を願います。
いつも更新を楽しみにしてみます。

ああ、どうもありがとうございます。名前をほめられることはあまりないので、光栄です。ちなみにどのへんがいいのでしょうか。

あと、MainMenuがなくても、今回のAppleScript一発で私のやっているメモリの解放は全て実行できます。お試しください。

Web拍手の連打、しかと受け止めました。拍手は私の心の糧ですので、連打してもらうと更新頻度がアップするかもしれませんので、気が向いたら連打してもらえるといいと思います。

ところでなぜ星のオオジさまなんでしたっけ???

「ハル」って良い名前ですね。:

「ハル」の名前が良いと持ったのは「響き」です。
何となく春を連想させる様なホンワカする感じ。
星のオオジ様と表現をしたのは、プロフィールを読む前と、
読んだ後でのハルさんの印象にギャップがあったからです。
プロフィールを読む前はインテリな感じ、プロフィールを読んだ後は、
一人インテリ漫才師という様な印象です。

それと、私事ですが前のコメントで「ビミョ〜感が. . .」と書きましたが、
ズバリ、「面白かったよ!」と言う事です。もしかしたら、
私の意味する事と逆の意味でハルさんが捉えていたら、ハルさんも私も
イテテな感じがするので、それはビミョ〜なので . . . 。
要するに、有益な情報をありがとうと言いたかったのです。
表現が回りくどくて分かりにくかったですがそういう事です。
それじゃ、また来ます。

>「ハル」の名前が良いと持ったのは「響き」です。
>何となく春を連想させる様なホンワカする感じ。

ああ、ありがとうございます。
すみません中身こんなで。

>プロフィールを読む前はインテリな感じ、プロフィールを読んだ後は、
一人インテリ漫才師という様な印象です。

おお、なんだか新しいステキな肩書きですね。FFのジョブみたいですね。いただきます。

「テキストサイト管理人への100の質問」は、実はかなり力のこもったコンテンツでありまして、超がんばって書きました。おもしろいと言ってもらえて報われた感じです。

またどうぞ〜。

Applescript 入れさせて頂きました。ありがとうございます。ぼくも Safari を使っているので悩んでおりましたが、muta さんがフォローして下さって解決です。

ところでこの一連のスクリプト、完了するまでの所要時間はどれくらいのものなのでしょうか?あるいは完了したのを知る方法ってあるのでしょうか?

>keizoさん

どうもです。
Safariの件は手落ちですみません。
結構適当なので、皆さまのフォローで成り立ってます。

で、所要時間ですが、Finder の再起動とDockの再起動は数秒です。Weekly Maintenance Scriptの実行は、MainMenuの実行と同じなのでその時間を調べると、大体20分です。従って、合計ざっくり20分ぐらいと思います。

完了したかは、MenuMeterでCPU利用率を見ているとわかります。頑張ってる最中はCPUが100%になっていて、終わると下がります。

Scriptの実行終了後に、何か表示を出せばわかりやすいのでしょうが、この辺のやり方だれか教えてくれないかな、などとひそかに期待してます。

今回のScriptはver1.oなので、徐々に改良できれば良いのですが。

ハルさん、さっそくの返事ありがとうございます。そ、そんなに掛りましたか!?ぼくは途中で終ったと思い、念の為と、ご丁寧にリスタートまでしちゃいました。もう一度やっておきます。

実行終了のダイアログ。密かにハルさんに期待しております。一応、ぼくもスクリプトを習得しようと試みてはいるのですが、物の数分で眠くなってしまいます。

「ハル」って良い名前ですね。:

メール読みましたよ。
その件についてどうしても聞いて欲しい事があり長々とコメントします。
実は私がコメントしてすぐにMainMenuがバージョンアッップをしてまして、
それに加えてmutaさんの所でちょうど良いタイミングで
ハルさんのAppleScriptの使用法が書いてありましたので
試してみました。
それで、keizoさんのコメントにぶら下がって私の感想を、、、
私( safari )はメモリが512MBなのですぐにメモリの空きが
無くなってスワップファイルが溜まっていくのですが、
メモリの空きが10MBを切っていてヤバいって時に試したら
約5秒でメモリの空き容量が約100MB回復しました。(おぉ〜!)
スワップファイルが溜まる前にハルさんの必殺技を使えば
私のMacも幸せになれるという事です。
話がずれましたがここからが本題です。
実は私もハルさんにMainMenuのバージョンアップした事を
コメントしようとして結局止めたのですが、その時に
私が書こうとしたコメントと全く同じ分面をハルさんが
そのまんま書いている事に鳥肌が立ってしまいました。
その分面とは「メニューが日本語化してます。
フォントが微妙にステキです。」という所です。
「こっ、これは !! 」( ヒェ〜〜〜!! )
久々の不思議体験でなんだかワクワクしてしまいました。
それと、ハルさん的に「なんだ、知っていたのか、、、。」
とガクッとなったかもしれませんが、ハルさんの行為が
とても嬉しいのです。
「持ちつ持たれつ」の関係って感じ?
それと、もう一言。
MainMenuのフォントを見た時は爆笑していました。
それじゃ、また。

>keizoさん
>そ、そんなに掛りましたか!?ぼくは途中で終ったと思い、念の為と、ご丁寧にリスタートまでしちゃいました。もう一度やっておきます。

メモリの解放自体は1分以内に終わるんですよ。ただ、weekly maintenance script自体はその後も動いているということです。

リスタートってAppleScriptの再実行ですか?二重に走らせたときにどうなるかは考えていませんというか知りません・・・

終了確認できた方が良さそうですね。

「ハル」って良い名前ですね。さん

>メモリの空きが10MBを切っていてヤバいって時に試したら
>約5秒でメモリの空き容量が約100MB回復しました。(おぉ〜!)

おお、ちゃんとお役に立っているとは、うれしい限りです。ページアウトが始まってスワップファイルまみれになると、本当にやってられなくなりますからね・・・

>その分面とは「メニューが日本語化してます。
>フォントが微妙にステキです。」という所です。
>「こっ、これは !! 」( ヒェ〜〜〜!! )

文面まで同じとは、人の心を読むことが得意な私もビックリです。やはりフォント気になりますよね〜。

このフォントは一体何だろうと、手持ちのフォントを見てみたのですが、残念ながら見つかりませんでした。なんだろう?

コメントを投稿

(いままで、ここでコメントしたことがないときは、コメントを表示する前にこのブログのオーナーの承認が必要になることがあります。承認されるまではコメントは表示されません。そのときはしばらく待ってください。)

最近のトラックバック

アーカイブ

クリエイティブ・コモンズ

Creative Commons License
このブログは、次のライセンスで保護されています。 クリエイティブ・コモンズ・ライセンス.
Powered by
Movable Type