#!/bin/bash
# Ollama 記憶體最大釋放腳本 - 關閉所有不必要的應用程式

echo "=== 當前記憶體狀態 ==="
free -h 2>/dev/null || vm_stat | head -8

echo ""
echo "=== 關閉非必要應用程式 ==="

# 要保留的應用程式
KEEP=("Terminal" "Ollama" "openclaw" "OpenClaw" "iTerm2" "Warp" "Alacritty")

# 取得所有執行中的應用程式
for app in $(ps aux | grep -i "/Applications/" | grep -v grep | awk '{print $11}' | sort -u); do
    basename=$(basename "$app" .app)
    keep=0
    for k in "${KEEP[@]}"; do
        if [[ "$basename" == *"$k"* ]]; then
            keep=1
            break
        fi
    done
    if [ $keep -eq 0 ]; then
        pid=$(pgrep -f "$app" 2>/dev/null | head -1)
        if [ -n "$pid" ]; then
            echo "  關閉: $basename (pid $pid)"
            kill -9 $pid 2>/dev/null
        fi
    fi
done

# 特別清理記憶體大戶
for heavy in "Google Chrome" "Safari" "Firefox" "Edge" "Slack" "Discord" "Notion" "Spotify" "Music" "Photos" "Mail" "Calendar" "Maps" "FaceTime" "Messages" "iMovie" "Pages" "Numbers" "Keynote"; do
    pid=$(pgrep -f "$heavy" 2>/dev/null)
    if [ -n "$pid" ]; then
        echo "  關閉: $heavy"
        kill -9 $pid 2>/dev/null
    fi
done

# 清理 DNS 快取和記憶體快取
sudo purge 2>/dev/null || echo "  (purge 需要 sudo，跳過)"

echo ""
echo "=== 清理後記憶體 ==="
free -h 2>/dev/null || vm_stat | head -8

echo ""
echo "=== 重啟 Ollama ==="
killall ollama 2>/dev/null
sleep 2
open -a Ollama
sleep 3
echo "Ollama 已啟動，記憶體已釋放"
