Pertama, jumlah RAM yang perlu disimpan sangat kecil. Bahkan, hanya set halaman kotor yang dipetakan ("lazeback writeback") yang perlu disiram, dan juga semua halaman pribadi yang telah ditulis ke dan dipindahkan kode yang dapat dieksekusi perlu ditulis.
- Segmen .teks dari file executable selalu didukung oleh pemetaan file. Itu juga berlaku untuk setidaknya beberapa DLL (tetapi tidak semua, tergantung pada apakah mereka perlu dipindahkan).
- Memori yang juga didukung oleh pemetaan file dapat dibuang (dianggap bukan CoW atau RW dan kotor).
- Penulisan balik malas masih harus terjadi, tetapi selain itu, cache dapat dibuang.
- Memori yang telah dialokasikan tetapi belum ditulis (biasanya bagian terbesar dari data aplikasi!) Didukung oleh halaman nol dan dapat dibuang.
- Bagian yang lebih besar dari halaman memori yang berstatus "siaga" (pengaturan per-proses yang bekerja pada Windows ternyata sangat kecil, hanya 16MB) akan disalin ke file halaman di latar belakang di beberapa titik dan dapat dibuang. .
- Wilayah memori yang dipetakan oleh perangkat tertentu seperti kartu grafis mungkin (mungkin) tidak perlu disimpan. Pengguna terkadang terkejut bahwa mereka menyambungkan 8GiB atau 16GiB ke komputer, dan 1GiB atau 2GiB hanya "hilang" tanpa alasan yang jelas. API grafik utama mengharuskan aplikasi dapat dengan konten buffer menjadi tidak valid "dalam beberapa kondisi" (tanpa mengatakan apa artinya ini). Dengan demikian tidak masuk akal untuk berharap bahwa memori yang disematkan oleh driver grafis juga dibuang. Lagipula layar akan menjadi gelap.
Kedua, bertentangan dengan Anda menyalin file, membuang set halaman RAM yang perlu disimpan disk adalah menulis berurutan tunggal, berdekatan dari sudut pandang drive. Win32 API bahkan memperlihatkan fungsi tingkat pengguna untuk operasi ini. Kumpulkan write secara langsung didukung oleh perangkat keras dan bekerja secepat disk secara fisik dapat menerima data (controller akan langsung menarik data melalui DMA).
Ada sejumlah prasyarat agar ini berfungsi (seperti penyelarasan, ukuran blok, penjepit), dan itu tidak cocok dengan caching dan tidak ada yang namanya "lazy writeback" (yang merupakan optimasi yang sangat diinginkan dalam operasi normal ).
Itulah alasan mengapa tidak setiap menulisbekerja seperti itu setiap saat. Namun, ketika sistem menyimpan file hibernasi, semua prasyarat dipenuhi secara otomatis (semua data disejajarkan halaman, seukuran halaman, dan disematkan) dan caching menjadi tidak relevan karena komputer akan dimatikan sebentar lagi.
Ketiga, melakukan satu tulisan yang berdekatan sangat menguntungkan baik untuk disk pemintalan dan untuk disk solid state.
File swap dan file hibernasi biasanya merupakan file paling awal yang dibuat dan dicadangkan di disk. Mereka biasanya memiliki satu, paling banyak dua fragmen. Jadi, kecuali sektor rusak dan disk harus merealokasi sektor fisik, penulisan sekuensial logis diterjemahkan menjadi penulisan sekuensial fisik pada disk pemintalan.
Tidak diperlukan operasi baca-modifikasi-tulis pada disk saat sejumlah besar data yang berurutan dan bersebelahan sedang ditulis. Masalah ini kurang diucapkan pada harddisk berputar yang dapat menulis sektor tunggal yang cukup kecil (Asalkan Anda tidak menulis byte tunggal, yang biasanya dicegah dengan cache, perangkat tidak perlu mengambil konten asli dan menulis kembali versi yang dimodifikasi.) .
Namun, ini adalah sesuatu yang sangat terlihat pada SSD di mana setiap penulisan berarti bahwa misalnya blok 512kB (yang merupakan angka biasa, tetapi bisa lebih besar) harus dibaca dan dimodifikasi oleh pengontrol, dan ditulis kembali ke tempat yang berbeda. blok. Meskipun pada prinsipnya Anda dapat menulis (tetapi tidak menimpa) unit yang lebih kecil pada flash disk, Anda hanya dapat menghapus blok besar, begitulah cara kerja perangkat keras. Ini adalah alasan mengapa SSD menjadi jauh lebih baik pada penulisan berurutan besar.