Все веб-браузеры, включая Google Chrome, исторически имели проблемы с потреблением большого объема памяти. Иногда даже четыре открытые вкладки могут потреблять около 5 гигабайт ОЗУ.
Данная проблема актуальна не только для Chrome, но также часто наблюдается и в Mozilla Firefox.
В Windows 10 представлена функция оптимизации памяти на основе использования сегмента кучи
С выходом Windows 10, версия 2004 (May 2020 Update), Microsoft представила простой способ для использования сегмента (segment heap) кучи в Windows 10 для хранения данных с целью улучшения оптимизации памяти.
В документе для разработчиков Microsoft пояснила:
Значение SegmentHeap показывает, что сегмент кучи будет использоваться. Сегмент кучи является современной реализацией кучи, которая снижает общее потребление памяти. Данный элемент поддерживается в Windows 10, версия 2004 (сборка 19041) и выше.
После изучения новой функции, инженеры Google решили протестировать использование сегмента кучи в Chrome вместо стандартной кучи, чтобы проверить влияние на потребление памяти.
Инженер Google, Брюс Доусон (Bruce Dawson) отметил в коммите:
При проведении экспериментов с использованием сегмента кучи для chrome.exe мы ожидали добиться экономии памяти в сотни мегабайт для основного процесса браузера и службы сетевого подключения на отдельных тестовых устройствах. Полученные результаты должны были сильно различаться, при этом наибольшая экономия должна была приходиться на многоядерные машины.
В своих тестах Доусон обнаружил, что сегмент кучи снижает потребление памяти на внушительные 30%, поэтому эксперименты были продолжены уже в Chrome 85 Canary.
Тесты показали падение производительности
После двухнедельного тестирования было установлено, что экономия памяти оказалась ощутимой, но сопровождалась серьезным увеличением нагрузки на центральный процессор.
По словам Доусона, при включении сегмента кучи повышенная загрузка ЦП приводит к снижению производительности Google Chrome на 10%, а энергопотребление и нагрузка на ЦП увеличиваются на 13%.
По этой причине Google отключил использование сегмента кучи в Chrome 85, но оставил флаг для последующего тестирования.
Наш план заключается в отключении функции в версии 85 с последующим пересмотром в будущем.
Повышение нагрузки на процессор (10%-ное замедление по данным Speedometer и 13%-ное увеличение энергопотребление) оказалось слишком большим для нас.
Доусон надеется, что Microsoft добавит новые возможности в функцию HeapCreate(), которая используется для создания новой кучи памяти, для контроля использования кучи со стороны разработчиков приложений.
Если это будет реализовано, в будущем будет проще протестировать сегменты кучи и, возможно, разработать решение для снижения нагрузки на процессор.
Для пользователей Windows это означает, что Chrome будет продолжать потреблять чрезмерное количество памяти при просмотре веб-страниц.
Обновления программ, что нового
• Обновление AMD Ryzen Chipset Driver 7.04.09.545 для Windows 11 и Windows 10
• AMD Radeon Software Adrenalin 25.4.1 Non-WHQL. Поддержка The Elder Scrolls IV: Oblivion Remastered и FSR 4 для новых игр
• Новая бета-версия Steam для ПК и Steam Deck исправляет проблемы с заметками и исчезающими скриншотами
• Облако Mail запустило безлимитную автозагрузку фото и видео со смартфона
• Kaspersky для Windows. Релиз MR21: Защита от фейковых сайтов и новые функции в бесплатной версии
• Vivo представила X200 Ultra и X200s: новые стандарты мобильной фотографии