以前に書いたメモリ解放スクリプトを少し改良しました。
#!/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以下になるとメモリ解放を試みます。