Процес на кожен сайт: вся історія в одному рядку
Chromium розбитий на безліч процесів операційної системи: рендерери для вкладок — по одному на сайт (ізоляція сайтів розводить різні сайти по різних процесах навіть усередині однієї вкладки), процес GPU, мережева служба, служба сховища і по процесу на кожне завантажене розширення. Сенс — локалізація шкоди: впалий рендерер забирає одну вкладку, а не браузер, і скомпрометований рендерер не має прямого доступу до інших сайтів. Плата — накладні витрати кожного процесу, тому двадцять відкритих сайтів означають двадцять маленьких Chromium, у кожного своя частка бібліотек, JIT-куп і буферів відмальовування.
Набігає швидше, ніж чекаєш, бо рахуються не лише вкладки:
- По процесу-рендереру на сайт — десять сайтів у десяти вкладках плюс ті, що підвантажені з чужих доменів
- Кожне ввімкнене розширення тримає власний фоновий процес, навіть коли простоює
- Процес GPU зберігає декодовані картинки, тайли й кадри відео — вкладка з 4K-відео на YouTube — це переважно воно
- Service workers живуть і після закриття вкладки, тримаючи офлайн-застосунки напоготові
- Передзавантажені сторінки з підказок омнібоксу й пререндеринг займають пам'ять ще до візиту
Чому Chrome не віддає пам'ять назад
Друга причина — алокатор Chromium, PartitionAlloc, який кешує звільнені сторінки всередині кожного процесу під миттєве повторне використання, а не повертає їх Windows. «Диспетчер завдань» показує цей пул частиною обсягу Chrome, хоча формально він вільний, — число виглядає страшнішим, ніж реальний тиск на систему. У справжній нестачі пам'яті браузер її віддає — тому Chrome «оживає» після закриття важкого застосунку, — але в простої він свідомо тримає те, за що вже заплатив.
Частина утриманої пам'яті — чесне кешування: кеш «назад/уперед» зберігає відмальовані сторінки, щоб кнопка «Назад» спрацьовувала миттєво, а відображення дискового кешу не перечитують файли. Тому браузер, що працює кілька днів, виглядає важчим за щойно запущений: він просто закешував більше того, що варто тримати під рукою. Це той самий аргумент «простоююча пам'ять — викинута пам'ять», і тут він технічно слушний: альтернатива — малювати заново кожну сторінку, до якої ви повертаєтесь.
Що справді зменшує апетит
Увімкніть «Економію пам'яті» на сторінці chrome://settings/performance: вона присипляє неактивні вкладки й визволяє їхні рендерери — це найбільший важіль для сесії з купою вкладок. Далі шукайте справжніх винуватців: натисніть Shift+Esc, відкрийте власний диспетчер завдань Chrome і відсортуйте за пам'яттю — частіше за все один важкий сайт (веб-IDE, відеодзвінок, роздутий вебмейл) або одне розширення переважує сорок звичайних вкладок. Розширення заслуговують на особливу підозру: кожне додає процес до кожного вікна, і багато які працюють без зупинки.
Після цього чесна відповідь — арифметика, а не магія: менше сплячих вкладок, менше розширень, жодного назавжди закріпленого дашборда, який ніхто не читає. Перемикання апаратного прискорення міняє пам'ять GPU на навантаження CPU — на слабкій вбудованій графіці іноді в плюс, іноді навпаки. А чого не працює: «чистильники оперативки», що примусово підрізають робочі набори, — число падає, а браузер заїкається, поки знову збирає підрізане.
Питання та відповіді
Чому Chrome споживає так багато оперативної пам'яті?
Він тримає окремий процес на кожен сайт задля ізоляції від збоїв і атак, а його алокатор кешує звільнену пам'ять усередині процесів для миттєвого повторного використання. Число в диспетчері включає й пам'ять, яку Chrome формально тримає про запас.
Як зменшити споживання пам'яті Chrome?
Увімкніть «Економію пам'яті» на chrome://settings/performance, вилучіть невикористані розширення і знайдіть через Shift+Esc, який сайт чи розширення насправді їсть пам'ять. Менше відкритих вкладок працює краще за будь-які твіки.
Перевірте склад ліцензії до покупки.
Разовий 30-хвилинний тест охоплює базові функції. Інструменти з позначкою PRO залишаються заблокованими до активації платної ліцензії.
Читайте також
Написати нам: [email protected]