記憶體不足時可用 swap 擴展。磁碟 swap 以硬碟空間充當記憶體,透明但慢;zram 將閒置記憶體資料壓縮存入 RAM 保留區,犧牲少量 CPU 換取較大可用記憶體,速度快得多。優先使用 zram。
adb shell
cd /dev/block/
ls | grep zram # 有 zram0/zram1 表示支援
無裝置檔案可能是核心未勾選 zram 選項,需重編核心開啟 CONFIG_ZRAM。
#!/system/bin/sh
SWAP_FILE="/data/swap1"
if [ ! -f "$SWAP_FILE" ]; then
dd if=/dev/zero of=$SWAP_FILE bs=390250 count=256 # 建立 ~100MB swap 檔
fi
busybox mkswap $SWAP_FILE
busybox swapon -p 0 $SWAP_FILE # 優先級 0(最低)
echo 0 > /proc/sys/vm/swappiness # swappiness=0 僅在記憶體極低時使用 swap
cat /proc/sys/vm/swappiness
busybox free -m
cat /proc/swap

舊裝置無 zram 支援才退而求其次用磁碟 swap,並將 swappiness 設低避免過早觸發交換。