По-перше, обсяг оперативної пам’яті, який потрібно зберегти, напрочуд невеликий. Насправді потрібно промити лише набір зіставлених брудних сторінок ("ледачий запис"), а також потрібно записати всі приватні сторінки, записані та переміщені виконуваним кодом.
- Сегменти .text виконуваних файлів завжди підкріплюються картографічним відображенням. Це також стосується принаймні деяких DLL (але не всіх, залежить від того, чи потрібно їх переселяти).
- Пам'ять, яка підтримується аналогічно зі зіставленням файлів, може бути викинута (припускається, що вона не є КВ або RW та забруднена).
- Ліниве списання все ж доведеться мати, але крім цього, кеші можна відкинути.
- Пам'ять, яка була виділена, але не записана (зазвичай більша частина даних програми!), Підтримується нульовою сторінкою і може бути відкинута.
- Більша частина сторінок пам'яті, які знаходяться в режимі "очікування" (фактичний робочий набір резидента в процесі роботи в Windows на диво невеликий, лише 16 Мб) буде скопійовано у файл сторінки у фоновому режимі в якийсь момент і може бути відкинуто. .
- Регіони пам'яті, відображені на певних пристроях, таких як відеокарта, можуть (можливо) не потребувати збереження. Користувачі іноді дивуються, що вони підключають 8GiB або 16GiB до комп’ютера, а 1GiB або 2GiB просто "пішли" без видимих причин. Основні графічні інтерфейси API вимагають можливості додатків із вмістом буфера стає недійсним "за певних умов" (не вказуючи точно, що це означає). Таким чином, нерозумно очікувати, що пам'ять, яку закріплює графічний драйвер, теж просто відкидається. Зрештою, екран затьмариться.
По-друге, на відміну від копіювання файлу, скидання набору сторінок оперативної пам’яті, на яких потрібно зберегти диск, є єдиним послідовним, суміжним записом з точки зору накопичувача. API Win32 навіть розкриває функцію на рівні користувача для цієї самої операції. Збір записів безпосередньо підтримується апаратним забезпеченням і працює так само швидко, як диск фізично здатний приймати дані (контролер буде безпосередньо перетягувати дані через DMA).
Існує ряд передумов для цього (наприклад, вирівнювання, розмір блоку, закріплення), і це не добре грає з кешуванням, і немає такого поняття, як "ледачий відкат" (що дуже бажана оптимізація при нормальній роботі ).
Ось чому не кожен пишепрацює так постійно. Однак, коли система зберігає файл сплячки, всі передумови автоматично виконуються (всі дані вирівнюються за сторінками, розміром сторінки та закріплюються), а кешування просто стає неактуальним, оскільки комп'ютер буде вимкнено за мить.
По-третє, ведення одночасного запису дуже сприятливо як для прядильних дисків, так і для твердотільних дисків.
Файл swap і файл сплячки зазвичай є одними з найбільш ранніх файлів, створених і зарезервованих на диску. Зазвичай вони мають один, максимум два фрагменти. Таким чином, якщо сектори не пошкоджені і диск не повинен перерозподілити фізичні сектори, логічне послідовне записування перекладається на фізичне послідовне записування на обертовому диску.
Жодні операції читання-зміни-запису на диску не потрібні, коли записується величезна кількість послідовних, суміжних даних. Ця проблема менш виражена на спінінг-жорстких дисках, які можуть записувати поодинокі сектори, які є досить маленькими (за умови, що ви не пишете одиничних байтів, що кешування зазвичай перешкоджає, пристрою не потрібно вибирати оригінальний вміст і записувати назад модифіковану версію.) .
Це, однак, є дуже помітним на SSD, коли кожне записування означає, що, наприклад, блок 512 Кб (це звичайне число, але воно може бути більшим) має бути прочитаний і змінений контролером, і записаний назад до іншого блок. Хоча в принципі можна писати в (але не перезаписувати)) менші одиниці на флеш-дисках, ви можете коли-небудь стирати величезні блоки, це як працює апаратне забезпечення. Це причина, чому SSD дешевшає на величезних послідовних записах.