Site Isolation объясняет высокое потребление памяти Chrome

346 комментарии
Браузер Chrome держит вкладки и сайты в отдельных процессах, и это делает его требовательным к оперативной памяти. Разработчики Chromium, начиная с Chrome 67 включили Site Isolation по умолчанию ради защиты от атак класса Spectre, заплатив за это ростом потребления ОЗУ

Google Chrome годами носит репутацию браузера, который занимает гигабайты оперативной памяти. Открытые вкладки и расширения действительно отнимают заметную долю ОЗУ, и в диспетчере задач Chrome регулярно оказывается среди лидеров по потреблению. Но за высокой загрузкой памяти стоит не «прожорливость» ради эффекта, а архитектурные решения: изоляция сайтов по процессам, реакция на сигналы операционной системы и встроенный механизм выгрузки фоновых вкладок. От того, как устроены эти механизмы, зависит ответ на вопрос, когда высокое потребление памяти Chrome — это норма, а когда повод вмешаться.

Почему Chrome держит память: процесс на каждый сайт

Chrome построен на многопроцессной архитектуре: разные сайты помещаются в отдельные процессы рендеринга, изолированные друг от друга. Эта схема называется Site Isolation и работает по умолчанию на десктопных платформах начиная с Chrome 67. Каждый процесс запускается в песочнице с ограниченными правами, поэтому страница со скомпрометированного сайта не получает доступ к данным других открытых вкладок.

Site Isolation — механизм Chromium, при котором страницы с разных сайтов рендерятся в разных процессах операционной системы. Защищает от атак по сторонним каналам класса Spectre и от уязвимостей в процессе рендеринга.

Цена такой изоляции — рост потребления памяти. В документации Chromium для Chrome 67 при включённой полной изоляции всех сайтов и большом количестве открытых вкладок указывается прирост порядка 10-13% по сравнению с конфигурацией без неё. Это не побочный эффект, а сознательный компромисс: больше процессов — больше изоляции, больше изоляции — выше нагрузка на память.

Многопроцессная архитектура отвечает и за устойчивость. Когда вкладка падает из-за ошибки в JavaScript, утечки памяти на странице или сбоя в стороннем плагине, рушится только её процесс рендеринга — остальные вкладки и интерфейс браузера продолжают работать. В однопроцессной модели один зависший скрипт уронил бы весь Chrome со всеми открытыми вкладками.

Сигналы о давлении на память: MemoryPressureMonitor и Listener

Chromium не измеряет общий объём физической памяти в системе и не закладывает себе фиксированную долю. Вместо этого в коде используется механизм, в котором компонент MemoryPressureMonitor опрашивает операционную систему о текущей нагрузке на память и рассылает уведомления подписчикам — объектам MemoryPressureListener, которыми являются разные подсистемы браузера: кэш изображений, кэш JavaScript, рендереры.

MemoryPressureMonitor — компонент Chromium, который получает от ОС сигнал об уровне давления на память (умеренный или критический) и передаёт его подсистемам браузера. Реализации существуют для Windows, macOS и ChromeOS; в Linux используется чтение /proc/meminfo.

Когда система сообщает о нехватке памяти, подписчики реагируют по-разному: сбрасывают кэш, выгружают фоновые вкладки, освобождают неактивные ресурсы. Это объясняет, почему на машине с большим объёмом ОЗУ Chrome «спокойно» держит десятки вкладок, а на системе с дефицитом памяти начинает агрессивно их выгружать — Chromium не оценивает доступную память самостоятельно, а полагается на сигналы ОС.

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

comss img 2026 05 12 090907

Помимо реакции на сигналы ОС, в Chrome есть отдельная пользовательская настройка. Раздел «Настройки» -> «Производительность» -> «Экономия памяти» позволяет автоматически выгружать неактивные вкладки. При возврате к выгруженной странице она перезагружается заново, но остаётся видимой на полосе вкладок.

В режиме доступны три варианта агрессивности:

  • Умеренная экономия памяти — вкладки становятся неактивными после длительного периода бездействия.
  • Сбалансированная экономия памяти (рекомендуется) — оптимальный интервал.
  • Максимальная экономия памяти — вкладки выгружаются быстрее всего.

Сама экономия памяти включена по умолчанию: чтобы изменить уровень или отключить её, нужно зайти в раздел «Производительность» вручную.

Свободная память: запас, а не потеря

Тезис «неиспользованная память — потерянная память» (Unused RAM is wasted RAM) часто приводят в защиту высокого потребления. У него есть рациональное зерно: современные операционные системы — Windows, macOS, Linux — используют свободную память под кэш файлов, данные активных приложений и буферы ввода-вывода. Память, лежащая без дела, действительно не ускоряет систему.

Но между высокой загрузкой памяти и реальным давлением на память — большая разница. Система, в которой занято 80-90% ОЗУ, может работать плавно, если есть запас освобождаемого кэша и ОС не перебрасывает данные в файл подкачки. И наоборот, машина с формально меньшим использованием памяти ощущается медленной, если ОЗУ фрагментирована, активно сжимается или постоянно вытесняется на диск.

Поэтому намеренно открывать десятки лишних вкладок Chrome ради «нагрузки на ОЗУ» бессмысленно. Вкладки — не пассивные блоки памяти: многие из них продолжают выполнять скрипты, обновлять содержимое и обращаться к процессору. Свободная память нужна для запуска новых приложений и для пиковых нагрузок: когда ОЗУ забита под завязку, любая дополнительная программа начнёт работать с задержками.

Как понять, что памяти действительно не хватает

Высокое число в диспетчере задач само по себе не повод закрывать вкладки. Признаки реального давления на память выглядят иначе:

  • приложения подвисают при переключении между окнами;
  • вкладки перезагружаются при возврате к ним даже без включённой экономии памяти;
  • активность SSD без видимой причины растёт — ОС интенсивно работает с файлом подкачки;
  • система замедляется при многозадачной нагрузке.

В таких случаях имеет смысл закрыть лишние вкладки, отключить ненужные расширения или перевести экономию памяти в режим максимальной агрессивности. Для систем с малым объёмом ОЗУ это даёт ощутимый эффект; на машинах с 16 ГБ и больше разница чаще заметна только в цифрах диспетчера задач, а не в реальной отзывчивости.

Заключение

Высокое потребление памяти Chrome — следствие изоляции сайтов и многопроцессной модели, а не недосмотр в коде. ОЗУ, занятая под кэш и фоновые процессы, не «потеряна»: пока остаётся запас на новые задачи и ОС не сваливается в активный своп, система работает нормально. Ориентироваться стоит не на цифру в диспетчере задач, а на отзывчивость приложений и нагрузку на накопитель.

Автор:
Комментарии и отзывы

Нашли ошибку?

Новое на сайте