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以下になるとメモリ解放を試みます。