"Введення сторінок / сек - це лічильник для перегляду, але ви не повинні турбуватися про те, щоб" мінявся ", оскільки Windows не використовує файл сторінки, як * nixes.
Спочатку потрібно зрозуміти, що сторінки Windows не виходять. Я збираюсь процитувати непосильну частину публікації в блозі Еріка Ліпертса (злегка відредаговану), оскільки я сам не можу сказати про це краще:
"Оперативну пам'ять можна розглядати як просто оптимізацію продуктивності. Доступ до даних в оперативній пам'яті, де інформація зберігається в електричних полях, які поширюються зі швидкістю світла, набагато швидше, ніж доступ до даних на диску, де інформація зберігається у величезному, важкому молекули чорних металів
Операційна система відслідковує, які сторінки зберігання, з яких процесів доступ до них найчастіше, і робить їх копію в оперативній пам'яті, щоб отримати швидкість. Коли процес отримує доступ до вказівника, який відповідає сторінці, яка зараз не кешована в оперативній пам'яті, операційна система робить «помилку сторінки», виходить на диск і робить копію сторінки з диска в оперативну пам’ять, роблячи обґрунтоване припущення що незабаром незабаром буде доступ до нього.
Операційна система також дуже розумна щодо обміну ресурсами лише для читання. Якщо два процеси завантажують одну і ту ж сторінку коду з однієї DLL, операційна система може спільно використовувати кеш оперативної пам'яті між двома процесами. Оскільки, імовірно, код не буде змінений жодним із процесів, цілком розумним є збереження подвійної сторінки ОЗУ, поділившись нею.
Але навіть при розумному обміні, в кінцевому підсумку ця система кешування втратить оперативну пам’ять. Коли це станеться, операційна система здогадується про те, які сторінки найменш швидше знову відкриються, записує їх на диск, якщо вони змінилися, і звільняє цю ОЗУ, щоб прочитати щось, що швидше за все знову буде доступним. скоро.
Коли операційна система здогадується неправильно, або, що швидше, коли просто не вистачає оперативної пам’яті, щоб зберігати всі сторінки, що часто відвідуються, у всіх запущених процесах, тоді машина починає «обмолочувати». Операційна система витрачає весь свій час на написання та читання дорогого дискового накопичувача, диск працює постійно, і ви не виконаєте жодної роботи.
Це також означає, що "закінчення оперативної пам'яті" рідко призводить до помилки "поза пам'яттю". Замість помилки це призводить до поганої продуктивності, оскільки повна вартість факту, що зберігання фактично знаходиться на диску, раптом стає актуальною.
Ще один спосіб погляду на це полягає в тому, що загальна кількість віртуальної пам’яті, яку споживає ваша програма, насправді не має великого значення для її продуктивності. Важливим є не загальний об'єм споживаної віртуальної пам'яті, а, скоріше, (1) скільки цієї пам'яті не поділяється з іншими процесами, (2) наскільки великий "робочий набір" сторінок, що часто використовуються, і ( 3) чи більше робочих наборів усіх активних процесів, ніж наявна оперативна пам'ять.
На сьогоднішній день має бути зрозуміло, чому помилки "поза пам'яттю" зазвичай не мають нічого спільного з тим, скільки фізичної пам'яті у вас є, або як навіть, скільки пам’яті доступно. Майже завжди йдеться про адресний простір, який у 32-бітовій Windows порівняно невеликий і легко фрагментований. "
Кілька додаткових моментів:
- DLL-файли та програмні файли завжди є лише тимчасовими, і ніколи не виходять, оскільки вони вже є на диску (і зазвичай перші сторінки вивільняються, коли фізичний таран стає низьким)
- у вас набагато більше, ніж у вільних записів таблиці сторінок або у вас сильно фрагментована пам'ять, ніж будь-які інші проблеми з пам'яттю (крім загальної низької продуктивності, як уже згадувалося
- навіть якщо ви працюєте без файлу сторінки, ви все одно можете отримати помилки сторінки
- загалом кажучи, що дивлячись на зафіксовану пам'ять, це більше говорить про те, як процес використовує пам'ять
для повного уявлення про те, як працює управління пам'яттю у Windows
Менеджер віртуальної пам'яті в Windows NT
якщо ви думаєте, що у вас є проблема з пам'яттю, я спершу запропоную переглянути цю презентацію щодо усунення несправностей з пам'яттю Windows
Ось чудове пояснення того, чому іноді у вас виходить «з пам’яті», коли ви не завдяки фрагментації пам’яті:
Див. Також Просування меж Windows: Фізична пам'ять
Докладніше про віртуальну пам'ять, фрагментацію пам’яті та витоки та WOW64
Оперативна пам’ять, віртуальна пам’ять, файл сторінки та все таке (підтримка microsoft)
Оновлення:
Windows 10 робить дещо інше з пам'яттю, і з часом ви побачите процес під назвою "Система та стисла пам'ять". Windows 10 додає "сховище стиснення" до списку підкачки. Цей операційний пам'ять є USER пам'яттю, яка належить системі (зазвичай система мала лише пам'ять ядра). Ця пам'ять стискається на місці для середнього зменшення приблизно до 30%. Це дозволяє зберігати більше сторінок у пам'яті (для тих, хто займається математикою, це на 70% більше місця). Зверніть увагу, що якщо в пам'яті все ще є тиск, то сторінки з сховища стиснення (режим користувача в системному просторі) можуть бути розміщені на зміненому список (стислий), який потім може бути записаний у фізичний файл сторінки. Система побачить, що вони перебувають із простору в режимі користувача системи та стиснута, і не намагатиметься повернути їх у магазин Таким чином, на системах Windows 10 може виглядати, що система вдихає таран, але насправді вона просто намагається бути ефективнішою при використанні оперативної пам'яті. Користувачі Mac використовують подібну функцію з 2013 року, а новіші версії ядра Linux використовують версію стиснення пам'яті. Цей спосіб збереження пам’яті не тільки кращий, але вже поширений серед інших операційних систем.