Такое ощущение, что шутки о чрезмерном потреблении оперативной памяти браузером Chrome существуют столько же, сколько и сам веб-обозреватель. И они небеспочвенны, ведь программа всегда нуждалась в слишком уж большом количестве ресурсов по сравнению с конкурентными решениями, и разработчики из Google всегда старались оптимизировать её. За последние годы они добились ощутимых успехов, но шутки о прожорливости Chrome никуда не делись, ведь в любой момент можно открыть «Диспетчер задач» и увидеть, как браузер даже с одной вкладкой может потреблять несколько сотен мегабайт. Но здесь есть загвоздка — информация, которая по умолчанию отображается этой утилитой Windows, некорректная. Вернее, она вводит пользователей в заблуждение, отображая совсем не те значения, которые юзеры ожидают увидеть.
Chrome не пожирает память, а резервирует её
На самом деле, «Диспетчер задач» на своей главной вкладке в столбце «Память» показывает объём неиспользуемой памяти для каждого из процессов, а «общей», и в этом ключевая загвоздка. Дело в том, что сюда относится как действительно используемая браузером память, так и зарезервированная.
Как и многие другие программы, Chrome резервирует память для того, чтобы в случае необходимости (открытия новых вкладок, запуска тяжёлых элементов на веб-странице и прочего) иметь возможность использовать её. Более того, в столбце «Память» утилита Windows учитывает ещё и файл подкачки процесса — часть SSD или HDD, где хранятся давно не используемые данные.
Резервирование памяти — это хорошо, а не плохо
Важная особенность резервирования памяти в том, что такой подход не особо влияет на ресурсы системы. Он известен как Commit-based memory («Память на основе обязательств») и, если сильно упрощать, заключается в следующем:
- При открытии вкладки Chrome запрашивает у операционной системы больше оперативной памяти, чем нужно на данный момент — на случай, если понадобится использовать больше ресурсов для обработки содержимого страницы.
- Операционная система резервирует запрошенный объём памяти, помечая в своём диспетчере, что эти ресурсы (пусть и не используемые в данный момент) отведены под Chrome.
- В процессе работы Chrome использует ту часть полученных ресурсов, которые действительно необходимы в текущий момент — если вкладка закрывается, то браузер высвобождает и все зарезервированные мегабайты.
Однако если операционная сталкивается с нехваткой памяти, то она легко забирает у Chrome зарезервированные неиспользуемые мегабайты, и это никак не сказывается на функционировании браузера.
Единственный нюанс в том, что та же Windows может забрать зарезервированную браузером оперативную память только в том случае, если посчитает её нехватку достаточно серьёзной для нормального функционирования системы.
Chrome резервирует чуть ли не 5 раз больше, чем ему нужно
Чтобы увидеть разницу между реально потребляемой оперативной памятью и общей выделенной, включая зарезервированную, в случае с Windows достаточно либо открыть «Монитор ресурсов» и перейти во вкладку «Память», либо запустить «Диспетчер задач», перейти на вкладку «Сведения» и добавить на неё столбики «Выделенная память» и «Память (активный частный рабочий набор)».
Чтобы не вдаваться в сложные технические детали, достаточно посмотреть на столбики частно используемой памяти и сравнить её с «Завершённой»/«Выделенной» — сравнение будет несколько некорректным, но наглядным для общего понимания того, сколько тот или иной процесс Chrome действительно потребляет памяти, а сколько резервирует.
На практике видно, что в некоторых случаях браузер резервирует чуть ли не в 5 раз больше того, сколько реально использует. Но здесь важно отметить, что такое нескромное поведение присуще только маленьким процессам. Судя по всему, чем тяжелее процесс, тем меньше дополнительной памяти Chrome резервирует — например, в рамках моего мини-эксперимента у самого тяжёлого процесса на 155 540 КБ реально используемый объём памяти составил около 57%, а у самого маленького на 6 616 КБ — лишь около 22%.
Расчёт объёма резервируемой памяти — это комплексный вопрос, и просчитать, сколько мегабайт на что конкретно ушло, нельзя. Но известно, что веб-обозреватель анализирует содержимое вкладок (активные скрипты и мультимедиа) и обучается на прошлом опыте пользователей.
Chrome всё равно «плохой», но не настолько, как принято считать
Хотя браузер только резервирует память, а не расходует, её всё равно может не хватать другим процессам или элементам системы, которые Windows считает не особо важными, чтобы для них отбирать зарезервированные мегабайты. К тому же другие браузеры тоже используют вышеописанный подход Commit-based memory, и они почему-то задействуют меньше ресурсов.
Но не стоит заблуждаться: если главная вкладка «Диспетчера задач» показывает, что 10 открытых вкладок Chrome израсходовали 3 ГБ оперативной памяти, это необязательно сигнализирует о несовместимости браузера со слабыми компьютерами. Те самые якобы израсходованные мегабайты показывают лишь объём ОЗУ, который нужен для максимально производительной работы Chrome при возможном возникновении дополнительных потребностей со стороны используемых сайтов.