Macのメモリ解放スクリプト

以前に書いたメモリ解放スクリプトを少し改良しました。

#!/bin/sh

INACTIVE_THRESHOLD=8192
FREE_THRESHOLD=1024

VM_STAT=$(vm_stat)
    FREE=$(echo "$VM_STAT" | awk '/Pages free/ {print $3}' | tr -d '.')
    ACTIVE=$(echo "$VM_STAT" | awk '/Pages active/ {print $3}' | tr -d '.')
    INACTIVE=$(echo "$VM_STAT" | awk '/Pages inactive/ {print $3}' | tr -d '.')
    SPECULATIVE=$(echo "$VM_STAT" | awk '/Pages speculative/ {print $3}' | tr -d '.')
    WIRED=$(echo "$VM_STAT" | awk '/Pages wired down/ {print $4}' | tr -d '.')

INACTIVE=$(expr $INACTIVE / 256)
FREE=$(expr \( $SPECULATIVE + $FREE \) / 256)

if [ $INACTIVE -gt $INACTIVE_THRESHOLD ] || [ $FREE -le $FREE_THRESHOLD ];  then
  #purge
  du -sx / >& /dev/null & sleep 15 && kill $! >/dev/null 2>&1
fi

以前はINACTIVEだけ監視してましたが、空きメモリも監視するようにしました。

これでMacbook Airでも戦えるはず……

サンプルだとINACTIVEが8192MB以上または空きメモリが1024MB以下になるとメモリ解放を試みます。

SSD!!

この記事を参考にしてMacBookProをSSD化してみました。

SSDに換装してTrim EnablerでTrimを有効にすれば作業完了。

こんな感じでOSXがSSDを認識してくれました。

OSの起動もアプリの起動も高速化して快適です(´∀`)

MacのInactiveメモリを解放する

MacってInactiveに割り当てられたメモリが増えつづけるので、なんか気持ち悪いですよね。
基本的には放っておいて構わないとは思いますが、Inactiveが大きすぎるのも嫌なので、Inactiveが一定以上になったら開放するスクリプトを作ってみました。

#!/bin/sh

THRESHOLD=8192
INACTIVE=`vm_stat |grep inactive |awk '{print $3}' |sed -e "s/¥.//g"`

if [ `expr $INACTIVE / 256` -gt $THRESHOLD ] ; then
  purge
  #du -sx / >& /dev/null & sleep 15 && kill $! >/dev/null 2>&1
fi

このシェルスクリプトをcronで定期実行すると Inactiveが8192MB以上の時にメモリ解放してくれます。

purgeコマンドだと効きが強すぎて重いので、duコマンドを使ったほうが良いかも(効きは弱いですが)

Kaspersky Anti-Virus for Mac

リアルタイム保護でiSwiftが効かなくなってる気がするんだが気のせいか?
オンデマンドスキャンだとiSwiftでの高速化が働いてるけど、リアルタイム保護だと毎回律義に検査してる気配が・・・

MacBookPro


新型Mac miniがいつまで待っても出ないのでMacBookProを買っちゃいました。
Core2DuoからIvy Bridgeなi7にパワーアップしたので、すご〜〜く快適です(*´д`*)

PhotoshopもLightroomもサクサク動くよ(つД`)

唯一の問題は予想以上にデカイ発熱量。
少しでも重い処理を行うとすぐにCPU温度が跳ね上がります。
気休めで、すのこタンの上に設置して熱対策をしていますが、
もう少し廃熱とか考慮したデザインにしてほしいですね。