Mac の sleepimage ファイルとは?削除してもいい?
sleepimage は /private/var/vm/sleepimage にあるファイルで、macOS がスリープ用にメモリのコピーを置いておく場所です。スリープ中に電源が切れても、開いていた作業を Mac が復元できるようにするためのものです。sudo で削除はできますが、休止状態が有効なままだと次にスリープしたとき macOS がまた書き込むので、削除しても長期的な空き容量にはなりません。出ないままにするには電源設定の変更が必要で、その設定はこのファイルが守っている保護を外してしまいます。
このファイルの役割
man pmset には hibernatemode の値が3つ載っています。
hibernatemode |
スリープ時の動作 | 電源が切れた場合 |
|---|---|---|
0 |
メモリへの給電を続け、ディスクにコピーを作らない | セッションは失われる |
3 |
メモリへの給電を続け、ディスクにもコピーを書く。マニュアル上のポータブル機の既定値 | コピーから Mac が復元する |
25 |
ディスクにコピーを書き、メモリへの給電をやめる。スリープと復帰は遅くなるがバッテリーには有利 | 必ずコピーから Mac が復元する |
standby も関係します。オンにしていると、しばらくスリープしていた Mac を macOS が休止状態へ移し、そのときもイメージが書き込まれます。このため hibernatemode 0 のデスクトップ Mac にもファイルがあることがあります。
自分の設定とファイルは次のように確認します。
pmset -g | grep -E 'hibernate|standby|autopoweroff'
ls -lh /private/var/vm
出力ではパスが hibernatefile として示されます。フォルダの一覧に /var/vm と出ることもありますが、/private/var/vm と同じ場所です。
どれくらい大きくなるか
常にメモリと同じ大きさになるわけではありません。このページを確認した Apple シリコンの Mac はメモリ 48 GB で、hibernatemode 3 のとき sleepimage は 2.0 GB でした。実際の大きさはモデルやメモリの中身で変わるので、決めつけずに測ってください。
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 が出てこなければ、その行は省きます。代償として、スリープ中にバッテリーが尽きたり、デスクトップ Mac が停電したりするとセッションは戻せずに終わり、保存していない作業は失われます。ノート型で元に戻すには、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 が大きいのはなぜ?
スリープ用にメモリのコピーを持つので、モデルやメモリの中身で変わります。ほかの Mac の数値はあまり参考にならないので、du -h /private/var/vm/sleepimage で確認してください。
sleepimage はスワップと同じもの?
違います。スワップは Mac が起動中でメモリが足りなくなったときにメモリページを置く場所です。sleepimage はスリープ中の電源喪失から復元するためにあります。
hibernatemode を 0 にするとどうなる?
スリープと復帰が少し速く感じられることがあり、そのモードではイメージは書き込まれません。ただしスリープ中に電源が切れると、開いていた作業は復元されません。standby がオンの Mac では、それもオフにするまでイメージが書き込まれることがあります。
ディスクが小さい Mac では sleepimage が問題になる?
問題になりえます。256 GB のディスクでは数 GB の重みが違うからです。それでも、先に開発者向けキャッシュ、iPhone のバックアップ、アプリのデータを見てください。スリープの仕組みを変えずに、はるかに多くの容量を戻せます。