bgpict2.png 
わかばマークのMacの備忘録
初心者による Mac OSX の便利な使い方や、ソフトウェアの紹介など、Macのこといろいろ。

2023 / 12

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 



http://wakabamac.blog95.fc2.com/blog-entry-179.html

Release Memory2
icn_AppleScript
Release Memory2 : メモリ領域を解放するAppleScript
OS10.?~10.4 ※OS10.3.9では使えた
フリーウェア


うむらうすさんの「スワップファイルをなくそう4」の記事中で公開されている AppleScript の「Release Memory2.scpt」の紹介です。

最初に注意書きとして、このスクリプトはスワップファイルを削除するものではありません
スワップファイルが新たに作られる前に、このスクリプトを実行してメモリを解放するものです。スワップファイルが既にたくさん作られてしまった場合は、再起動しましょう。

(参考ページ)
スワップファイルをなくそう (うむらうす)
スワップファイルをなくそう2 (うむらうす)



swapfile

【 スワップファイルって? 】


そもそも「スワップファイル」とは何?と言う話から。

スワップファイルとは 【swap file】 - 意味・解説 : IT用語辞典 によると・・・

使われていないメモリ領域を一時的に保存しておくためにハードディスク上に用意されたファイル。メモリ容量が少ないと大きなスワップファイルが作成され、頻繁に内容の交換が発生するため、システムの性能低下を招く。



要するに、物理メモリで補いきれない分を、ハードディスクにスワップファイルとして保存し、仮想メモリとして使っています。
(専門家じゃないので、あまり詳しいことは知りませんが・・・)


MacOSX の場合は、起動時に自動的に1個(64MB)のスワップファイル(ファイル名は swapfile0)が作られます。作られる場所は

/private/var/vm/swapfile0

の不可視フォルダに作られます。

使って行くうちにメモリが足りなくなって来ると、スワップファイルがどんどん増えて行きます。

1個目 : swapfile0(64MB)←起動時に必ず作られる
2個目 : swapfile1(64MB)
3個目 : swapfile2(128MB)
4個目 : swapfile3(256MB)
5個目 : swapfile4(512MB)
6個目 : swapfile5(1024MB)

という風に増えて行きます。

070811r2m1

スワップファイルが、なぜ忌み嫌われるかと言うと、これが増えて行くことによってMacの動作が激遅になってしまうからです。

僕の場合、5個目のスワップファイルが作られてしまうと、何をするにしても動作が遅いカメさんモードになり、6個目が作られてしまうと、ほとんど使い物にならなくなります。

再起動すれば、スワップファイルは削除されます。
再ログインでは、ちゃんと削除されません。





【 Release Memory2 を使ってみる 】


上記のように、増えると厄介なスワップファイルですが、「Release Memory2」は、スワップファイルを新たに作らせない為に、いっぱいになったメモリの領域を解放する AppleScript です。

長時間、Macを起動させていて、アプリケーションをたくさん起動していたり、起動しっ放しにしているとメモリの空き領域が少なくなって行きます。

アプリケーションをこまめに再起動しても、メモリの「インアクティブ(現在非使用中)」領域が少しずつ増え、メモリの「空き」領域は減って行きます。OS側で次の行動に備えてDATAをいろいろとキャッシュしているので「インアクティブ」領域が増えて行きます(間違ってたらすみません)。
ハルさん流に言うと「捨てられない症候群」らしい。

例えば、アクティビティモニタ でメモリの状態を見て、このような状態であったとします。

<Release Memory2 使用前>
070811r2m2

--- 固定中(ワイアード)
--- 現在使用中(アクティブ)
--- 現在非使用中(インアクティブ)
--- 空き

この状態で Release Memory2 を使ってみます。
(けっこう時間が掛ります。席を外す前などに実行するのがいいでしょう。)

起動中はメモリの使用領域が増えたり、減ったりして行きます。この間はメモリに新たなキャッシュが加えられるようなことはしない方がいいです。何もしない方が無難。

このメモリ使用量が増えたときに、思いがけず、スワップファイルが新たに1個作られてしまうなんてこともありますが、細かいことは気にしてはいけません。

Release Memory2 が終了するとダイアログで表示されます。
070811r2m5

終了後にアクティビティモニタを見てみると、このようになっています。

<Release Memory2 使用後>
070811r2m3

「ワイアード()」「アクティブ()」領域はあまり変わりませんが、「インアクティブ()」領域が解放され、「空き()」領域に変わっています。

: インアクティブ 200.84MB → 127.17MB (73.67MB減)
: 空き 79.15MB → 129.59MB (50.44MB増)


上記でアプリケーションをこまめに再起動しても、あまり効果がないようなことを書いたけど、メモリを大食いするアプリケーションについては、再起動する価値はあります。
使用環境によって違いはあるでしょうが、だいたいWebブラウザが大きくメモリ消費しています。
この状態で、Webブラウザを再起動してみると・・・

<さらに Webブラウザ 再起動後>
再起動する前と、同じページを開いて同じ条件にしています。
070811r2m4

「空き()」領域がずいぶん増えました。
代わりに「インアクティブ()」領域が増えてしまうので、Release Memory2 を実行する前に Webブラウザを再起動する方がいいでしょう。





【 Release Memory2 がやってること 】


Release Memory2 がやってることは下記の通りです。

・Finderの再起動 (参考記事 : アプリケーションの強制終了
・Dockの再起動
・アクセス権の修復 (参考記事 : Disk Utility/ アクセス権の修復
・Dashboardのキャッシュの削除

この4つのことを、AppleScriptを使って、まとめてやっています。
それぞれ、手動でやっても同じ効果はあると思います。
なぜ、アクセス権の修復でメモリを解放するのか、よく解りませんが・・・。

「Dashboardのキャッシュの削除」については、OS10.3以下では意味が無いので、スクリプトエディタでこの行を削除してしまうなり、行の頭に「--」をつけてコメントアウトしておいたほうがいいでしょう。
(参考記事 : AppleScript をいじってみる
070811r2m6

別にそのままでも、動作するようです。

('07/10/13追記)
作者のハルさんからコメント頂いたのですが、Dashboardのキャッシュの削除は、メモリ解放とはあまり関係ないようです。
(追記おわり)





【 Release Memory2 自分なりの使い方 】


Release Memory2 の使い方として、メモリの状態を監視しておかなければ、あまり使えません。(上位版の「Freemem Monitor」「Freemem Keeper」を使えば、メモリの監視もやってくれる)

作者のハルさんもやってる?ように「MenuMeters」などのステータス監視ソフトを使うのが、いいようです。
070804mms1

僕の場合も、MenuMeters を使ってでチェックするのですが、やはり見落とすことが多いです。
なので、スワップファイルの保存先のフォルダ

/private/var/vm

の「vm」フォルダに、フォルダアクションを添付して、スワップファイルが作られるごとに Growl で表示させるようにしています。
070811r2m8
(参考記事 : Growlでフォルダ監視

これで、スワップファイルが作られたのを Growl で確認した後に、Release Memory2 を起動させるようにしています。特に「swapfile3」が作られた後に。

本末転倒な使い方ですが、僕の場合はメモリを768MBしか積んでいないので、スワップファイル無しでは成り立ちません。
5個目あたりのスワップファイルをいかに作らせないかということに、Release Memory2 を使っています。

「3、4個スワップファイルが出来てしまってるなら、再起動した方が早いんじゃ・・・。」
と、話の腰を折るようなことは、決して言ってはなりません。



それと、Release Memory2 の起動の方法ですが、スクリプトメニューはスペース確保のため表示させていません。
ButlerQuicksilverAmScriptsCMX などを使って起動させる方法もありますが、僕の場合はスクリプトをアプリケーションとして保存し直して使っています。

('07/10/13追記)
今現在は、スクリプトをアプリケーションバンドルとして保存して、配布されているようです。
(追記おわり)

やり方はスクリプトエディタで「Release Memory2」を開いて、別名保存でフォーマットを「アプリケーション」にして保存します。
070811r2m7
(上位版の「Freemem Monitor」「Freemem Keeper」をダウンロードすれば、アプリケーションバンドルとして保存された「Release Memory2」も同梱されています。)

こうすれば、普通のアプリケーションと同じように使えます。
これを、Finderウインドウのツールバーに登録しています。これなら忘れっぽい僕でも、アイコンを見たときに思い出すからです。
070811r2m9
(参考記事 : Finderウインドウのカスタマイズ

ついでに、ツールバーにマッチするようにアイコンを作ってみました。黄色下線部のアイコンです。




(あとがき)
僕は書きかけの記事を長い間、放っておく癖がある。
この記事も、ずいぶん前に書きかけたんだけど、この手のものは、素人の僕にとって頭の中でおぼろげに分かっていても、なかなか文章にすることが難しい・・・。
そうこうしている間にハルさんが Release Memory2 の上位版のものを公開されています。

残り空きメモリ監視AppleScript「Freemem Monitor」作成 (うむらうす)
空きメモリ確保AppleScript「Freemem Keeper」作った (うむらうす)

これらも、ダウンロードさせてもらいました。
また、そのうち記事にします。
(いつになるか、分からないけど・・・)



('07/11/02追記)
OS10.5 Leopard では Release Memory2 は効果がありません。アクセス権の修復を行っても、メモリの解放はしないようです。
OS10.4 Tiger まで。
(追記おわり)



('08/08/23追記)
OS10.5 Leopard対応版の「Release Memory for Leopard」を新たに作られています。
Release Memory for Leopardを作ってみた (うむらうす)

やっていることは以下の通り。
・Finder再起動
・Dock再起動
・Dashboard cache消去
・locate databaseの更新

終了時に Growl でお知らせするバージョンもあります。
(追記おわり)





(ダウンロードリンク)
Site top page : うむらうす
Download page : スワップファイルをなくそう4



(関連記事)
Freemem Monitor & Freemem Keeper --- メモリを監視してメモリ領域を解放する
Libera Memory --- 使用していないメモリ領域を解放する

edit

Utility | CM:4 | TB:0

tag : Memory  Maintenance  AppleScript  アクセス権 

+




どうもです ---------- ハル | URL 2007/10/13, 20:57 | edit
とても丁寧なレビューを書いていただき、ありがとうございます作者です。

私はとりあえず大ざっぱに作って細かく詰めない場合が多いので、皆さんにフォローしていただけるのは大変ありがたいです。

Dashboardのキャッシュ削除は本来のメモリ解放とは関係ないので、機能しないバージョンも作ると親切なのでしょうが、ものぐさでやってません・・・

ちなみに私は128MBのswapfileまでは許容しますが、256MBができないように気をつけています。

---------- wakaba | URL 2007/10/13, 23:16 | edit
>ハルさん、こんばんは。

ちょっと書きかけの記事を、長い間寝かしすぎたようで、今現在はアプリケーションバンドルとして保存されてるようですね。記事内容を直しておかないと・・・。

それと、僕はだいたい3・4個はスワップファイル出来てますね。

Leopard非対応 ---------- ハル | URL 2007/11/01, 23:36 | edit
どうもです。
Release Memory2ですが、Leopardではうまく動きません。アクセス権の修復の動きが変わっていて、時間がかかる上にメモリも解放されないようなのです。
ということで、OSは10.4.xまでということでお願いします。


---------- wakaba | URL 2007/11/02, 21:59 | edit
>ハルさん、こんばんは。

情報ありがとうございます。
記事にも修正入れました。


管理者にだけ表示を許可する
 

trackback URL