Нужно ли чистить реестр Windows?

27 февраля 2010, суббота 00:49
для раздела Блоги
В старые добрые времена реестр Windows 95 занимал пару мегабайт, а у Windows 7 он приближается к сотне. Актуален вопрос: как винда использует реестр. Загружает весь или только нужные части? Хранит его постоянно в памяти или выгружает после использования? Есть ли смысл чистить реестр от мусора, который оставляют после своей работы кривые приложения?

Я не стал искать на сайте мелкософта, а написал мелкую прогу, с помощью которой и получил ответы на вышеназванные вопросы. Скачать версию 1.10 вместе с исходниками можно по этому адресу. Тем, кто не любит много букв, советую переходить сразу к выводам.

Порядок проведения эксперимента

  1. После загрузки винды сохраняется снимок окна Process Explorer, показывающий размер занятой памяти. Далее несколько раз выделяется большое количество оперативки. Винда, стремясь удовлетворить запросы программы, урезает свой кэш, а измененные данные, в состав которых предположительно входит реестр, записывает в файл подкачки. После выделения оперативки сохраняются снимки окон с размером занятой памяти и использованием файла подкачки.
  2. Запускается моя прога, которая делает элементарную вещь: в ключ реестра записываются данные указанного размера. Размер данных превышает 100 MiB, что бы было проще увидеть изменения. Размер значений примерно равен 1 MiB — это максимальный размер для Windows XP. В качестве ключа был выбран HKEY_CURRENT_USER\RegSizeTest — он не используется виндою и это поможет понять, загружаются или нет неиспользуемые никем данные из файла в память.
  3. Повторение пункта 1 с «распухшим» реестром.
  4. Удаление данных, записанных в пункте 2, и запуск NTREGOPT для сжатия реестра до нормального размера.

Windows XP Professional 32-bit SP3

Перед записью данных в реестр:



Левый снимок сделан после загрузки винды, средний и правый — после выделения большого количества оперативной памяти. На снимке справа нам нужна цифра % Usage Peak. Это процент использования файла подкачки. Формула для перевода процентов в мегабайты:
Мегабайты = 4000 * проценты / 100.

После записи в реестр 220 Мб данных:



Файл реестра на диске увеличился на величину записанных данных.

Сравниваем Commit (желтый график) на левых снимках. Цифра подросла на те самые 220 Мб, т.е. данные загружены в память, хотя никем не используются. Об этом можно было сказать и не глядя на графики, т.к. во время загрузки винды появилась пауза в пару секунд, во время которой считываются лишние 220 Мб данных. Более интересна цифра Physical (красный график), которая показывает размер занятой оперативной памяти. Она увеличилась не на 220, а 440 Мб, так же как и System cache. Не слишком веселая картина.

Теперь посмотрим на средние снимки. Хорошая новость: цифры Physical одинаковы, значит винда неиспользуемые куски реестра выкинула из памяти. Но куда? В файл подкачки. На правых скриншотах видно увеличение занятого участка свопа на 360 Мб. Это меньше чем 440, но тем не менее распухание реестра в памяти после считывания его из файла очевидно.

Windows 7 Home Premium 64-bit

Перед записью данных в реестр:



После записи в реестр 100 Мб данных:



После записи в реестр 220 Мб данных:



После записи в реестр 500 Мб данных:



По сравнению с хрюшкой есть две новости, хорошая и плохая. Хорошая: реестр в памяти не распухает. Плохая: по непонятной причине не весь реестр сбрасывается в файл подкачки. В моем случае 50 из 100, 210 из 220 и 200 из 500. Получается странная картина: винда урезает system cache и paged pool ядра до минимума, а никому не нужное барахло продолжает пылиться в памяти. Что-то в мелкософте не докрутили…

Влияние размера реестра на скорость загрузки Windows

В реестр Windows 7 x64 были записаны следующие данные:

  • Ключ HKEY_CLASSES_ROOT\RegSizeTest — 10 Мб
  • Ключ HKEY_CURRENT_USER\Software\RegSizeTest — 10 Мб
  • Ключ HKEY_LOCAL_MACHINE\Software\RegSizeTest — 10 Мб

Общий размер реестра увеличился больше чем на треть. Таким примитивным способом был сымитирован мусор, который может накопится после продолжительной жизни операционной системы. Время загрузки увеличилось с 24 секунд до 24,5. Конфигурация компьютера: Core2 Duo 3.9 ГГц, 4 Гб памяти, винчестер старичок Seagate 7200.8 200 Гб.

Выводы

  • После загрузки винда считывает все содержимое реестра в память не зависимо от того, будут использоваться его данные или нет.
    (Исключение составляет ключ HKEY_LOCAL_MACHINE\COMPONENTS, который загружается только во время обновления компонентов винды службой Windows Modules Installer. Поэтому не забудьте запустить эту службу перед упаковкой улья COMPONENTS с помощью NTREGOPT.)
  • В случае необходимости, винда сбросит содержимое реестра из памяти в файл подкачки и отдаст освободившуюся память приложениям. Хрюшка способна сбросить все ненужные на данный момент данные, семерка же по непонятной причине часть реестра оставляет в памяти, даже если он никем не использовался с момента загрузки системы.
  • Размер реестра слабо влияет на время загрузки винды на современном железе.

А вот на вопрос, стоит ли чистить реестр, каждый должен ответить сам. Только сначала прикиньте, сколько места вы освободите. Ну 10, в клинических случаях 20 Мб. На современном компьютере почувствовать разницу невозможно. А потраченное время на чистку? А борьба с появившимися глюками, которая регулярно заканчивается переустановкой системы? Стоит ли мучить себя и винду? :) Сомневаюсь.

Тема на форуме по обсуждению Windows 7
Оценитe материал

Возможно вас заинтересует

Популярные новости

Сейчас обсуждают