Mac 上的 sleepimage 檔案是什麼,可以刪嗎
sleepimage 是位於 /private/var/vm/sleepimage 的檔案,macOS 睡眠時會把記憶體內容的副本存在這裡,用意是 Mac 睡眠中斷電時,還能把你開著的工作還原回來。你可以用 sudo 刪掉它,但休眠功能還開著的話,Mac 下次睡眠時 macOS 又會寫一份,所以刪除並不會長期拿回空間。要讓它一直不出現,得改電源設定,而這個設定同時也拿掉了這個檔案原本提供的保護。
這個檔案在做什麼
man pmset 對 hibernatemode 描述了三個值:
hibernatemode |
睡眠時的做法 | 斷電時 |
|---|---|---|
0 |
記憶體持續供電,磁碟上不留副本 | 你的工作階段會消失 |
3 |
記憶體持續供電,同時把副本寫到磁碟,這是手冊裡筆記型電腦的預設值 | Mac 從副本還原 |
25 |
副本寫到磁碟,記憶體停止供電:睡眠和喚醒較慢,但更省電 | Mac 一定會從副本還原 |
standby 也有影響。開啟它之後,睡了一段時間的 Mac 會被 macOS 轉進休眠,同樣會寫出映像檔,所以桌上型電腦即使是 hibernatemode 0,也可能還是有這個檔案。
要檢查你自己的設定和檔案,可以這樣:
pmset -g | grep -E 'hibernate|standby|autopoweroff'
ls -lh /private/var/vm
輸出裡會把路徑寫成 hibernatefile。資料夾列表裡可能顯示 /var/vm,它和 /private/var/vm 是同一個地方。
它會有多大
它不一定等於你的記憶體大小。本頁檢查用的 Apple 晶片 Mac 有 48 GB 記憶體,sleepimage 是 2.0 GB,hibernatemode 為 3。你的 Mac 會因機型和當時記憶體裡的內容而不同,所以用量的,不要猜:
du -h /private/var/vm/sleepimage
這個檔案和交換檔無關,儘管兩者常被放在一起提。新款 Mac 的交換檔放在另一個磁碟區,Mac 的交換記憶體怎麼運作有詳細說明。儲存空間設定通常把 sleepimage 算進系統資料,所以它可能是很大的系統資料的一部分,但很少是主要部分。
該不該刪
對多數人來說,不用。你只是拿回幾 GB,直到下次睡眠為止,而這個檔案正在做它該做的事。如果小容量磁碟真的需要這些空間,唯一能長期有效的做法,是把所有會寫出映像檔的設定都關掉。手冊說明,只有 hibernatemode、standby 和 autopoweroff 全部是 0,休眠映像檔才會完全停止:
sudo pmset -a hibernatemode 0
sudo pmset -a standby 0
sudo pmset -a autopoweroff 0
sudo rm /private/var/vm/sleepimage
如果 pmset -g 沒有列出 autopoweroff,就跳過那一行。代價是睡眠中電池耗盡,或桌上型電腦斷電時,你的工作階段就結束了,沒有辦法找回來,沒存的東西就沒了。要在筆記型電腦上恢復正常,把 hibernatemode 設回 3、standby 設回 1,然後讓 Mac 睡眠一次:
sudo pmset -a hibernatemode 3
sudo pmset -a standby 1
不要這樣做
- 不要一再刪除這個檔案,寫入的成本一樣要付,而且空間在下次睡眠時又被這個檔案拿回去。
- 不要把
hibernatefile指到外接磁碟,手冊說它只能指向根磁碟區上的檔案。 - 不要用論壇上的老招,拿一個鎖定的空檔案去取代它,這是在跟系統設定對抗,還會讓你看不到真實狀態。
- 不要在常常用光電池的筆記型電腦上關掉這些設定,那正是這個檔案要保護你的情況。
Mole 能幫上什麼
Mole 的清理沒有針對 sleepimage 的項目:它是正在使用的系統檔案,刪掉也無法長期釋放空間。分析會略過包括 /private 在內的 macOS 系統區域,所以 /private/var/vm 和 sleepimage 不會出現在那裡,也無法從 Mole 移到垃圾桶。Mole 也不會更動 hibernatemode。它唯一碰的 pmset 設定是 disablesleep,讓防止睡眠在闔上螢幕時也能保持喚醒。如果你的磁碟滿了,真正的原因通常在別處,啟動磁碟滿了怎麼辦是比較好的起點。
常見問題
可以刪除 Mac 上的 sleepimage 嗎?
可以用 sudo rm 刪,但休眠功能開著時,macOS 在下次睡眠會再寫一份。要讓它不再出現,就把 hibernatemode、standby 和 autopoweroff 設成 0,並接受睡眠中斷電會結束你的工作階段。
為什麼 sleepimage 這麼大?
它存的是睡眠用的記憶體副本,所以大小取決於你的機型和記憶體裡當時的內容。用 du -h /private/var/vm/sleepimage 自己查,別台 Mac 的數字參考價值不大。
sleepimage 和交換檔是同一個東西嗎?
不是。交換檔在 Mac 開機運作、記憶體不夠用時存放記憶體分頁,sleepimage 則是為了睡眠中斷電後還原而存在的。
把 hibernatemode 設成 0 會怎樣?
睡眠和喚醒可能感覺快一點,這個模式也不會寫出映像檔,但睡眠中如果斷電,你開著的工作就無法還原。如果 standby 還開著,在你把它也關掉之前,仍可能寫出映像檔。
小容量磁碟的 Mac 需要在意 sleepimage 嗎?
可能會,因為幾 GB 在 256 GB 的磁碟上比較顯眼。即便如此,還是先看開發者快取、iPhone 備份和 App 資料,這些能拿回多得多的空間,而且不會改變睡眠的運作方式。