Оперативная память рушим легенды и мифы

53695219

Существует целый ряд программ, по сути своей шарлатанских. Все они
обещают чудодейственный прирост скорости компьютера благодаря
освобождению места в оперативной памяти компьютера. Чтобы понять, почему
это бесполезно и даже вредно, для начала надо разобраться — что такое
вообще оперативная память?

1. Что такое оперативная память и зачем она нужна?

 

Оперативная память (или RAM — Random Access Memory, или ОЗУ — Оперативное Запоминающее Устройство) —
энергозависимая память, используемая для временного хранения команд и
данных, необходимых для вычислений, которые делает процессор (или
процессоры) компьютера. Более точно и подробно об этом рассказано в Википедии, а я сосредоточусь на собственно проблеме свободного места в оперативной памяти.

 

Примечание: я рассказываю максимально упрощенно, опуская
множество терминов и особенностей, оставляя только самую суть, требуемую
в контексте моей заметки.

RAM нужна процессору для быстрого доступа к данным, что
жесткий диск никак обеспечить не может. Поэтому программа при запуске
загружается в оперативную память — только так компьютер может делать
вычисления, гоняя данные к процессору из оперативной памяти и обратно.

В Windows запущенные программы физически могут располагаться не только
«в платах оперативной памяти», но и на жестком диске в файле pagefile.sys. Этот файл называется «файлом подкачки» или «свопом» (от англ. swap).

Идея такова: если программа занимает много памяти, ее часть выгружается
на жесткий диск в файл подкачки, освобождая «жизненное пространство» для
других программ, а в случае надобности данные загружаются обратно в
оперативную память.

Проблема заключается в том, что разница в скорости между оперативной памяти и жестким диском огромна. Наглядно это можно продемонстрировать так:

 

Чтобы в файл подкачки сбрасывались только ненужные данные, в Windows работает Менеджер памяти. Работает
вполне успешно, благодаря чему на компьютере с 512 Мб ОЗУ можно
запускать программы, занимающие более гигабайта памяти. Типичный
пример — современные версии Adobe Photoshop, 3DS Max и многие другие
программы для сложных вычислений. Конечно, при таком малом количестве
оперативной памяти программы будут тормозить, однако работать в них
худо-бедно, но возможно.

 

2. Что же делают оптимизаторы памяти?

 

В первую очередь — показывают размер свободного места в оперативной памяти.
Причем зачастую с красными буквами и предупреждениями о том, что это
негативно сказывается на скорости компьютера. Что, вообще-то, неправда.
Если программе нужна вся оперативная память — значит, это требуется для
дела и работать быстро она будет только в том случае,
если ей дадут места столько, сколько попросит. Типичный пример таких
программ — игры. Если игре требуется 2 гигабайта оперативной памяти — с
этим ничего поделать нельзя. Без требуемого объема RAM играть будет
проблематично из-за низкой частоты кадров — игра будет тормозить.
Оптимизаторы же пытаются создать обратный эффект (негативный) — освобождают память от программ, поэтому им выделяется памяти меньше, чем они того хотят.

Кстати, бывают ошибки под общим названием «утечка памяти»,
когда программа беспричинно разрастается и занимает всю память, но в
таком случае надо требовать от разработчиков этой программы исправления
ошибки, а не освобождать память оптимизаторами.

Программа оптимизации памяти (названия у них могут быть разные —
SuperRAM, FreeMemory, Memory Management SuperProMegaEdition и т.п.)
может освобождать память несколькими способами, но все они завязаны на
принципе обмана Менеджера памяти Windows:

 

  1. Программа вызывает специальную функцию EmptyWorkingSet (), которая
    заставляет все программы как можно больше выгрузить «себя» в файл
    подкачки.
  2. Программа начинает бесконтрольно разрастаться в памяти, сообщая
    Менеджеру памяти Windows о том, что ей это нужно для дела (я говорю
    метафорами, но вообще-то дело обстоит именно так), в результате чего
    Менеджер памяти выбрасывает как можно больше программ на жесткий диск

 

Итог всегда один: программы начинают тормозить, зато циферка
свободного места в оперативной памяти зеленого цвета и программа
оптимизации памяти говорит, что все хорошо. В итоге пользователь
радуется, открывает окно со свой любимой программой и… ждет. Потому что его любимая программа начинает сильно тормозить. Так
будет до тех пор, пока программа не вернет «себя» в оперативную память
из файла подкачки на жестком диске. В итоге индикатор свободного места
снова сообщает о занятости памяти, пользователь злится, запускает
очистку памяти и все происходит по второму (третьему, пятому, десятому)
кругу.

 

Обратного эффекта — чтобы программа заняла всю оперативную память якобы для быстрой работы — добиться не удастся. Программы всегда берут столько памяти, сколько им нужно.Мешать этому процессу нельзя. Нельзя судить о скорости программы по тому, сколько места она занимает в оперативной памяти.

 

Вывод:освобождение оперативной памяти оптимизаторами идет только во вред и снижает производительность

 

3. Как надо оптимизировать память?

 

Самый очевидный способ повысить производительность компьютера —
закрыть ненужные программы. Второй — установить побольше планок (плат)
оперативной памяти, чтобы программы «чувствовали себя более вольготно» и
работали пошустрее. Других способов ускорения компьютера,
непосредственно связанных с оперативной памятью, нет.

 

Еще раз повторюсь: оптимизаторы памяти — бред с
целью заработать деньги на доверчивых пользователях. Такой же глупостью
является и подстройка «скрытых настроек памяти» в Windows, так как там
все уже протестировано и настроено наиболее оптимально.

 

 

 

4. О свободной оперативной памяти в Windows Vista, 7, 8

 

На форумах я часто вижу возмущенные крики (цитирую): «Поставил
Windows 7, посмотрел Диспетчер задач, а там говорится, что занято
полтора гигабайта или вся оперативная память! Windows 7 жрет очень много
памяти!»

На самом деле все обстоит совсем не так и причин возмущаться нет. Совсем
наоборот: в современных операционных системах свободная память
отводится под кэш. Это происходит преимущественно благодаря функции
SuperFetch. Благодаря кэшу программы запускаются быстрее, так
как вместо обращения к жесткому диску данные загружаются из оперативной
памяти (см. картинку выше, разница в скорости написана жирным шрифтом).
Если какой-то программе понадобиться больше оперативной памяти — кэш
моментально сократит свой размер, уступив место. Подробнее об этом
написано на Хабрахабре, мне добавить нечего.

 

Вывод: память очищать не нужно, потому что каждый байт объема используется максимально эффективно.
Забудьте про оптимизаторы памяти — они не оптимизируют ничего.

 

5. Изменение размера файла подкачки или его отключение

 

Тоже довольно распространенные, в некотором роде вредные, советы. Об этом есть хорошая статья на Хабрахабре. Я лишь приведу выводы той статьи:

 

  1. Изменять размер файла подкачки нет особого смысла.
  2. Отключение вызовет неприятные глюки, потому что встречаются программы, которым необходимо
    писать данные в файл подкачки ввиду своего устройства. Это бывает
    тогда, когда программисты просто не предусматривают ситуацию с
    отключенным файлом подкачки.

 

6. Очистка файла подкачки

 

В файле подкачки pagefile.sys может храниться
разнообразная информация характера — например, картинки из недавно
открытых в браузере страниц. Это нормальный процесс, обусловленный
особенностями работы программ в Windows. При желании можно сделать очистку файла подкачки при выключении компьютера.
Однако производительности этот твик никаким образом не прибавит,
наоборот — это может серьезно замедлить выключение и перезагрузку
компьютера. Если вы не работаете с очень конфиденциальными данными, то я
рекомендую не включать очистку pagefile.sys.

 

 

 

7. Доступность более 4 Гб оперативной памяти в Windows

 

Интернет буквально завален рассуждениями пользователей о том, почему в
битной Windows доступно 3,5 Гб оперативно памяти вместо, например,
установленных 4 Гб. Было придумано множество теорий, мифов, легенд.
Например, считают, что это ограничение, сделанное Microsoft, которое
можно снять. На самом деле это отчасти правда — ограничения
действительно есть. Только снять их никак нельзя. Это обусловлено тем,
что в 32-разрядных системах драйвера и программы могут нестабильно
работать при использовании системой больше четырех гигабайт оперативной
памяти. Для 64-битных Windows драйвера очень тщательно тестируют, чтобы
такой нестабильности не было, поэтому вышеупомянутого ограничения там
нет.

 

В 32-битной Windows
доступно только 4 Гб оперативной памяти, в 64-битной такого ограничения
нет и доступно гораздо больше оперативной памяти — до 192 Гб.

 

Но не все так просто. Windows 7 Начальная (Starter)
(и ее аналог у Vista) не видит больше 2 Гб оперативной памяти. Это тоже
ограничение, только не по причине нестабильно работающего софта. Дело в
том, что Windows 7 Начальная распространяется исключительно на
маломощных нетбуках, по факту практически бесплатно, поэтому необходимо
было дистанцировать ее от более дорогих изданий: Домашней базовой,
Домашней Расширенной, Максимальной и т.д. Часть ограничений Windows 7 Starter можно снять, но только не ограничение на два гигабайта оперативной памяти.

 

Что касается остальных 32-битных изданий Windows XP, Vista, 7 и
Windows 8: на практике пользователю доступно еще меньше — 3,5 Гб. Все
дело в том, что драйвера тоже имеют свои адреса, которые и лишают
Windows доступа к части памяти в 512 мегабайт. Существует патч,
позволяющий «задвинуть» такие адреса за пределы четырех гигабайт, чтобы
система стала использовать хотя бы 4 Гб оперативной памяти, но это
практически не имеет смысла:

 

  • Как я писал выше, драйвера и программы не смогут корректно работать
    после такого патча, так что система может начать зависать, выдавать
    ошибки, т.е. вести себя непредсказуемо.
  • Даже если в компьютере будет установлено плат оперативки на 8, 16,
    32 Гб или больше — это никак не поможет их задействовать в 32-битном
    режиме операционной системы. Какой смысл от доступности допольнительных
    512 Мб оперативной памяти, если система станет нестабильной? Вот наглядный пример. Все равно придется ставить 64-битную Windows.

 

То, что видно 4 Гб оперативной памяти, не значит, что ее можно эффективно использовать. Проблема
в том, что 32-битная Windows не может грамотно выделить процессу
(программе) более 2 Гб физической оперативной памяти. Об этом многие
забывают — и зря. Неважно, сколько оперативной памяти в компьютере, если
программе нельзя дать больше 2 Гб ОЗУ. Пример: если пользователь
работает в 32-битной Windows с Photoshop на компьютере с 4 Гб
оперативной памяти — Фотошоп сможет задействовать всего лишь два
гигабайта максимум, остальные данные скинет в файл подкачки и начнет
тормозить. С играми то же самое.

 

Тольков 64-битной операционной системе программы могут
задействовать весь потенциал оперативной памяти объемом больше двух
гигабайт.
 И то не все, а только рассчитанные на использование
больше 2 Гб. Ситуацию опять-таки можно исправить с помощью
соответствующих патчей, но это работает далеко не со всеми программами.
Точнее, почти ни с какими программами такой «трюк» проделать нельзя.
Повторюсь: только 64-битная Windows и 64-битные программы — единственный
выход задействовать весь потенциал большого объема ОЗУ.

 

Между тем, с серверными версиями Windows ситуация иная. Там доступны
гораздо большие объемы. Почему так происходит, рассказано в статье Преодолевая границы Windows: физическая память от Марка Руссиновича.

 

Также есть моя заметка Какую выбрать систему — 32 бит или 64? в статье про установку Windows 7 для новичков.

 

8. Увеличение оперативной памяти с помощью ReadyBoost

 

Здесь уже Microsoft сама внесла путаницу, рассказывая на своем
официальном сайте о том, что с помощью ReadyBoost можно решить проблему с
нехваткой оперативной памяти по принципу «вставил флешку и расширил
объем ОЗУ». На самом деле это не так. При работающей технологии
ReadyBoost на флешке создается специальный файл, куда скидывается часть
файла подкачки и наиболее частоиспользуемые файлы. Таким образом,
некоторые файлы открываются быстрее, что отчасти устраняет проблему
«подвисаний» компьютера, но, к сожалению, не повышает производительность
системы и тем более не увеличивает объем оперативной памяти. Просто
позволяет загружать некоторые программы быстрее и устраняет торможения,
связанные с чтением на медленный жесткий диск компьютера.

 

Подробнее об ReadyBoost можно почитать здесь.

 

9. Подводим итоги

 

  • Оптимизаторами оперативной памяти пользоваться нельзя
  • Трогать настройки памяти — тоже, даже если в программе есть множество подсказок
  • Свободная оперативная память в Windows Vista/7/8 используется во
    благо, лучше не трогать этот функционал — все хорошо работает, улучшить
    практически ничего нельзя.

Добавить комментарий