OS Xを使いはじめて間もないユーザのために、『OS Xを快適に使う「5つの心がけ」』と題し、知られているようで知られていない使いこなし術をお届けする。シリーズ第2回のテーマは「メモリ領域の管理」だ。

「メモリの解放」が重要なわけ

プロセスを起動すると、一定量のメモリ領域が割り当てられる。そのメモリ領域はプロセス終了とともに解放されるので、大量のメモリを必要とするプロセスが存在するか、よほど多数のプロセスを起動しないかぎり物理メモリ空間は不足しない。不足したとしても、ページング(スワップ)という処理によりHDD/SDD上に仮想メモリ空間が確保されるので、システムの動作に支障はきたさない。

かなりザックリとしてはいるものの、以上が"建前としての"OS Xにおけるメモリの概念だ。これはOS Xにかぎらない話で、マルチプロセス/仮想メモリに対応したモダンなOSでは半ば常識といえる。

"建前"としたのは、メモリの解放が必ずしも期待どおりには行われない現実があるからだ。その原因のひとつは「メモリリーク」。割り当てられたメモリ領域を正しく解放しない/できない一種の不具合で、使用可能なメモリ容量が次第に減少する。Mountain Lionでは、プロセスIDを引数として「leaks」コマンドを実行すれば、メモリリークの状況を調べることができる。SafariやFirefoxなど、Webブラウザ(を構成するプロセス)を対象に調べてみよう。

leaksコマンドでプロセスの状況を調査すれば、メモリリークの有無を確認できる

ブラウザはときどき終了させるべし

Webブラウザは、大量のメモリを消費するものが多い。前述したSafariやFirefoxもその例に漏れず、多数のページをブラウジングするにつれ、表示するタブが増えるにつれ、メモリ消費量が増大する。現在のMac、特にノート型機は、いちどシステムをブートしてしまえばログアウトや再起動はまれで、スリープとスリープ解除を繰り返す利用スタイルが一般的だ。それにあわせ、Safariを起動したままのユーザが多いことも容易に想像できる。 実際、数日間断続的にSafariを使い続ければ、メモリリークは多数発生する。するとメモリの消費量は増え、空きメモリ容量は低下。そのまま使い続けると、他のアプリケーションを起動したときに物理メモリが足りず、補助記憶装置(HDD/SDD)上に確保した仮想メモリ領域(スワップファイル)で補おうとする。物理メモリと比較すると、特にHDDの場合書き込み速度に劣るため、体感できるほどシステム全体のレスポンスが低下する。

これを解決する方法は、ときどきSafariを終了すること。Lion以降、Safariは「再開」に対応しているため、複数のタブを開いたまま終了しても、次回起動したときには復元されているはず。たったこれだけのことで、スワップの発生によるストレスは回避できるのだ。

「空き」が減少すると、やがてページングが行われるようになり、システムのレスポンスが著しく低下する

1日1回「purge」と唱えるべし

Webブラウザのようにメモリ消費量が多く、メモリリークの発生が少なくないアプリケーションは、終了させることで確保されているメモリ領域は解放される。しかし、非使用中のメモリ領域すべてが「空き」に戻るわけではなく、実際の物理メモリ容量より少ない領域しか利用できないことになる。

これを解決するには、Terminalで「purge」コマンドを実行すること。引数は必要なし、ただ「purge」と実行すればいい。その際、できるだけ他のアプリケーションは起動しない状態(起動中のものは終了)することがポイントだ。

$ purge

purgeコマンド実行前(上)と実行後(下)の「アクティビティモニタ」。空き領域が増えていることがわかる

監視ツールを常駐させるべし

スワップファイルは、大きいものでは1GBにおよぶため、できれば作成されないほうが望ましい。しかし、メモリの使用状況を把握できるアプリケーションは、OS X標準のものは「アクティビティモニタ」だけで、いまひとつ扱いにくい。できれば、メニューエクストラに常駐するタイプがほしいところだ。

Mac App Storeで公開されている「FreeMemory」は、空き(Free)や現在非使用中(Inactive)など、物理メモリの状況をすぐに確認できるユーティリティ。メモリ解放機能も搭載されているため、できればTerminalは使いたくない、という向きにもお勧めできる優れものだ。

Mac App Storeで公開中のメモリ管理ツール「FreeMemory」(無償)