2009-07-19

言語を指定してアプリを起動

Mac OS Xで、言語環境の設定に関係なく指定したロケールに対応したUIでアプリケーションを起動する方法。

起動オプション -AppleLanguages を指定する。

例えば言語環境が日本語に設定されているとき、無理矢理英語のUIでSafariを起動するにはターミナルから、

$ /Applications/Safari.app/Contents/MacOS/Safari -AppleLanguages "(en)"

のようにする。

2009-07-03

仮想記憶をOFFにする

Mac OS Xで仮想記憶を切る方法

切る方法と見出しを付けといてなんだが、残念ながらMac OS Xでは仮想記憶を切ることはできない。旧Mac OS 9.xと違って、Virtual MemoryをOFFにはできないのだ。

スワップファイルを作らせない

仮想記憶自体を無効にはできないが、ディスクへのスワップは抑止できる。 Mac OS XはLinuxと違ってスワップ領域を通常のファイルシステム内のファイルとして作成する。 /var/vm/swapfile0のような名前でスワップファイルが作られていく。メモリを大量に使う処理を実行すると、swapfileの後ろの数字が増えてswapfile1, swapfile2という具合で、順にファイルが増えていく。 これが、お気に召さない方も多いようでdynamic_pagerという、スワップファイルの作成を担当しているプログラムを変更してswapfileが増えないようにしてしまえという強者もいらっしゃったりするが、Mac OS X 10.5 Leopardではそこまでしなくてもswapfileを作らせない方法がある。

dynamic_pagerを無効に

仮想メモリの一部を処理している、dynamic_pagerそのものを無効にする(起動しないようにする)のだ。スワップファイルが増えていくのがイヤだという人は次のようにすれば良い。

$ sudo /usr/libexec/PlistBuddy -x -c "Add :Disabled bool true" /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

と書いたが、

$ sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.dynamic_pager.plist

のようにlaunchctlコマンドを使うのがまっとうなやり方かな。

その後、再起動して/var/vm内のスワップファイルを削除すれば次から作られることはない。メモリが不足すると、すごく不幸な目にあうかもしれないので自己責任で。