Почему Vista использует всю мою память?
Неопытные пользователи Windows Vista постоянно задают вопросы относительного того, почему их новая ОС занимает всю оперативную память, при этом чем больше у них оперативной памяти, тем больше аппетиты Windows Vista. Давайте попробуем разобраться и расставить все точки над i.
Перво-наперво, стоит раз и навсегда понять и принять, что у Windows Vista абсолютно другой подход к управлению памятью. "Другой" означает, что не такой, как у Windows XP. B принципе их и сравнивать-то некорректно, но мы все-таки попробуем.
Посмотрите на строчку "свободное количество физической памяти" в диспетчере задач Windows Vista.
На момент снятия данного скриншота на компьютере было запущено несколько окон IE 7, плюс один удалённый рабочий стол. При этом свободно всего 6 Мб свободной памяти.
Теперь сравним этот скриншот со скриншотом из XP при примерно такой загрузке.
Напротив пункта "Доступная физическая память" написано, что свободно около 1.5 Гб - так и должно быть.
Так что же происходит? Почему Vista использует так много памяти, если на компьютере практически никаких действией не выполняется? Чтобы ответить на этот вопрос, нужно понять, на что расходуется оперативная память.
Предположим, что вы захотели создать новый текстовый файл.
1. Нажимаете два раза на иконке Блокнота.
2. Исполнительный файл Блокнота загружается с винчестера в память.
3. Блокнот исполнятся.
4. Блокнот распределяет свободную память для хранения вашего документа.
Итак, ясно, что блокнот нуждается в небольшом количестве памяти, достаточном, чтобы запустится и отображать своё содержимое. Но это может быть несколько мегабайт, как максимум. Даже если так. Что с оставшимися 2046 Мб памяти?
Вам надо перестать думать о системной памяти как о ресурсе, а начать думать, как о кэше. Как и L1 и L2-кэш вашего процессора, ОЗУ - всего лишь еще один высокоскоростной кэш между вашим компьютером и диском.
А самое важное правило дизайна системы кэша: пустой кэш - потраченный в пустую кэш. В пустом кэше никакого прока. Это дорогая, высокоскоростная память, на которую тратится питание и которая не приносит никакой пользы. Основная цель в жизни любого кэша - заполнять себя как можно быстрее данными, которые, скорее всего, понадобятся, и последовательно поставлять необходимые данные. Иначе вам придётся обращаться напрямую к жёсткому диску.
Диомидис Спинеллис (Diomidis Spinellis) опубликовал превосходный разбор рейтинга производительности кэша в типичном по состоянию на январь 2006 года компьютере.
В итоге, вот насколько быстрее ваша память, чем жёсткий диск:
Системная память - в 37 раз быстрее.
L2 кэш процессора - в 82 раза быстрее.
L1 кэш процессора - в 283 раза быстрее.
Эти данные объясняют, почему в Vista осталось всего 6 мегабайт свободной памяти. Vista старается предельно заполнить каждый байт памяти данными, которые, по её мнению, могут понадобится в следующий момент. Vista запускает с низким приоритетом фоновые процессы и размещает их в неиспользованную системную память. У Microsoft для этих процессов есть даже причудливое маркетинговое название - SuperFetch: "В прошлых версиях Windows реакция системы могла быть неравномерной. Вы могли сталкиваться с медленной работой системы после загрузки, после нескольких быстрых переключений пользователей или просто после обеда. Также как большое количество углеводов могут вас замедлить после еды, так и ваш компьютер может начать тормозить по разным причинам. Когда вы активно не используете компьютер, то фоновые задачи, включая автоматические резервные копии и антивирусное сканирование, пользуются этим, чтобы исполнятся, в тот момент, когда они меньше всего вас могут потревожить. Эти фоновые задачи могут занимать место в системной памяти, которое использовали ваши приложения. После того, как вы снова начнёте использовать компьютер, потребуется какое-то время, чтобы повторно загрузить ваши данные в память, что снизит производительность.
SuperFetch понимает, какие приложения вы используете чаще всего, и загружает их в память заранее, таким образом, ваша система быстрее реагирует на запросы. SuperFetch использует интеллектуальную схему системы приоритетов, которая понимает, какие приложения вы используете чаще всего, и даже способна различить какие приложения, вероятно, вы будете использовать в разное время, например, на выходных, а не во время рабочей недели, так что компьютер готов делать то, что хотите делать вы. Windows Vista может также расположить по приоритетам ваши приложения в фоновых задачах, так что даже когда вы выводите свой компьютер из режима простоя, система практически моментально готова к работе".
Конечно, это не новый концепт. Но Vista обрабатывает системную память как кэш намного агрессивнее и эффективнее, чем предыдущие версии Windows. Как вы можете заметить из вышеуказанного скриншота менеджера задач, Windows XP совершенно не волнуется по поводу того, что свободен целый гигабайт памяти. С перспективы кэширования - это уму непостижимо. Vista на пределах возможного старается, как может, чтобы заполнить системную память.
Я являюсь приверженцем религии использования системной памяти в качестве кэша, но SuperFetch всё еще может иметь несколько побочных эффектов. Первое, что я заметил, это то, что было что-то не так, когда я запустил Battlefield 2 в Vista и подключился к сетевой игре. Battlefield 2 - достаточно серьезный потребитель ресурсов. Игра регулярно использует 1 Гб памяти на больших картах для 64-х игроков. Во время первых нескольких минут я заметил, что система работала слегка замедленно и постоянно были обращения к диску. Это было очень необычно, и абсолютно не похоже на поведение в XP. Как только вы загружаете карту и входите в игру - вся игра находится в памяти. Что в данный момент могло загружаться с диска? Оказлось, что SuperFetch увидела кучу освобождённой для игры памяти и продолжила заполнять свободную память фоновыми процессами с низким приоритетом. Обычно, это осталось бы незамеченным, но даже фоновый низкоприоритетный дисковый поток достаточно заметен, когда вы в онлайне играете в шутер да еще с 63 пользователями на разрешении 1600х1200.
Я абсолютно спокойно отношусь к тому, чтобы SuperFetch по-своему использовала мою системную память. Вопрос не должен стоять "Почему Vista использует всю мою память?", но "Какого чёрта предыдущие версии Windows используют мою память так неэффективно?". Я не знаю. Возможно, до того как 2 Гб памяти стали стандартом в большинстве ПК, правила были другие.
Чем меньше у меня свободной памяти, тем лучше - каждый байт памяти должен всё время работать в мою пользу. Однако я хочу, чтобы был способ сообщить SuperFetch, чтобы он приостанавливал свою работу, когда я играю.
Источник:
Перевод: Zloy Kak Pё$
Комментарии
Народ, качайте нормальную прогу для определения свободной памяти, например MemStat XP, он все верно показывает. Task Manager пишет что свободно 1 MB, MemStat показывает правильно 580 MB (у мну 1 гиг памяти).
Уже поднимали этот вопрос. Новички не поймут, даже прочитав эту статью, куда девается свободное место в RAM. Первый пост этой новости - типичный пример этого непонимания. Люди почему-то хотят, чтобы было как можно больше свободной оперативки, почему - я не понимаю. Давайте напишем какой-нибудь FAQ следующего содержания:
Вопрос: Почему Диспетчер задач показывает 8 мб свободной оперативки, хотя программ у меня запущено мало, а программа XYZ показывает, что свободно 500 мб?
Ответ: Виста очень эффективно использует ОЗУ компьютера, используя каждый байт с пользой. Не беспокойтесь - если надо, Виста мгновенно освободит память для вашей любимой игрушки. А доверять сторонним программам мы не рекомендуем, так как они не предназначены для Висты.
Примерно так
Я всё понимаю, только почему некоторые сторонние проги показывают свободную память так, как написал Зерг? И, судя по всему, в Висте вообще нет смысла измерять память, так?
Мне кажеться, что вот именно из-за этой фишки, игры в висте медленнее на ~20% чем на XP
Люди!!! Я ночами не сплю и все думаю куда Виста девает мою свободную память компьютера? Что делать? Как жить дальше? Если ли жизнь после смерти? Эти вопросы меня очень беспокоят!!! По моему это Билли и Виста съедает нашу память!!!
А нафига вообще измерять память? Ну какая нафиг разница, сколько там памяти занято и сколько свободно? Неужели без знания этого нельзя за компом работать нормально?
Все нормальные люди, которых я видел, лезут смотреть состояние памяти только тогда, когда комп начинает дико тормозить. Тогда смотрят, какой процесс сожрал всю память и тогда уже решают, отрубить его, чтоб всё остальное работало, или отрубить всё остальное чтобы этот процесс нормально доработать смог.
Какая мне нафиг разница сколько памяти кушает ось с запущеным ИЕ и блокнотом?
ChatMaster, ты абсолютно прав - какая юзеру разница. Надо переложить этот вопрос на ОС и дело с концом. Похоже, в Висте так и сделали разработчики.
ProVal, дело в том, что сторонние программы не учитывают тот самый кеш Висты, поэтому такая путаница. В принципе, и сторонние программы, и Диспетчер задач не врут - просто Диспетчер задач учитывает еще и кеш.
ие - убожество, нафиг оно вообще нужно? Я вообще не могу считать объективным мнение того, кто пользуется ие
SlimShady
Отлично .. приверженец других броузеров.. покажите нам реализацию интерпретации hta?
Или же COM'объектность ...
Я вообще не могу считать объективным мнением того, кто вообще не знает что такое IE, как оно работает и кричит, что это убожество.
Deja_Vu, да, я приверженец других браузеров, и что вы мне предлагаете, снести нафиг ие из дистриба висты, чтобы не пахало пол служб, использующих инет? ИЕ продукт мелкомягких, и они будут продвигать его, даже навязывая его нам (с помощью WGA, например), но использовать его для серфинга, если у вас не выделенка 100 Мбит/сек - чистый мазохизм. Html приложения - это тот малюсенький плюсик, на фоне одного большего минуса, который представляет собой дырявый ИЕ. Вы правильно сказали ОНО, так как это и есть убожество, от своих слов я не откажусь.
А вот насчет объективности скажу, как я или кто-либо может считать ваш лепет объективным, если вы, даже не зная того, что знают другие, кричите что их мнение не объективно?
Прочитав статью, я понял, что Vista забивает оперативную память как можно больше, чтобы меньше обращаться к жесткому диску, тем самым увеличивая производительность. Но почему тогда Vista в некотором плане медленнее работает, чем Windows XPень???
Адская статья. На скринах ясно видно, что занято под вистой 9 с хвостом метров из ДВУХ ГИГОВ памяти - а нам втирают что всего осталось 6 мб. А где еще гиг? ;))
чето совершенно не верится в то, что написано в этой статье.... на компе с вистой 8 гигов памяти и все равно диспетчер задач показывет что свободно мегабайт 6, а у меня сразу вопрос: ну вот ЧЕМ можно забить все 8 гигов?? это первое и второе - если бы она их забивала, то естественно не из воздуха бы данные брала а с жеского диска, так несложно посчитать сколько бы времени комп усердно мурыжил жесткие диски чтобы забить эти 8 гигов, но однако же винда ТОЛЬКО запустилась и диспечер уже показывает что память ВСЯ занята, хотя дисками он почти не тарахтел... НЕУВЯЗОЧКА!!!!! в тоже время все другие проги показывают, что на самом деле свободно около 7 гигабайт! и КСТАТИ: если включить гаджет производительности в Висте то он будет показывать нормально свободную память, так же как и сторонние программы!!! (только он в процентах показывает)
Поэтому что-то тут не так...
По теме
- Что за папка WINSxS и почему она такая большая?
- Десять злободневных вопросов об Office 2007
- Microsoft Office "14" FAQ
- Windows "Vienna", "Seven", "7" FAQ
- FAQ по Windows Vista Beta 2 и Windows Vista в целом
- Windows Vista FAQ 2006
- Office 2007 FAQ
- Windows Vista FAQ
- FAQ по Longhorn build 5203
- FAQ по Longhorn build 4074