Про Mozilla Firefox иронично говорят, что это «браузер, который навсегда останется в памяти». Речь о его рекордных аппетитах в отношении оперативной памяти и вредной привычке висеть в ней как зомби-процесс. Однако в последнее время разработчики уделяют большое внимание оптимизации его кода — повышают стабильность работы и успешно снижают его потребности в объёмах ОЗУ.
Впервые работа с оперативной памятью была серьёзно оптимизирована в текущей версии за номером двадцать четыре. Главным образом изменения кода затронули способ работы с изображениями. До двадцать третьей версии включительно все картинки со всех страниц загружались и оставались в памяти постоянно, пока не закрывались соответствующие им вкладки.
Во время тестирования журналист немецкого издания Ghacks Technology News Мартин Бринкман (Martin Brinkmann) легко воссоздавал ситуации, когда браузер отъедал до 3 ГБ оперативной памяти. Даже не пытаясь имитировать тяжёлую нагрузку, я просто посмотрел, сколько в данный момент, пока пишу статью для «Компьютерры», требуется двадцать четвёртой версии. Получилось, около гигабайта.
Как понять — это объективно много или просто страницы подобрались такие тяжёлые? Попробуем открыть их в другом браузере. Те же самые вкладки в Opera 12.16 занимают… да примерно столько же и занимают! Разница, что называется, в пределах погрешности методики измерения.
В текущей версии Firefox за номером 24 из памяти постепенно стали удаляться изображения, которые не принадлежат текущей странице. При загрузке браузера с кучей вкладок (восстановление сеанса) отмечается, как и прежде, пик выделения ОЗУ, но теперь он быстро спадает из-за выгрузки изображений. Уже через несколько секунд работа становится комфортной. Пока я писал эти строки, процесс firefox.exe стал занимать 575 МБ, в то время как «Опера» «похудела» совсем незначительно — в пределах пары десятков мегабайт.
По данным StatCounter, сейчас доля всех версий Firefox составляет чуть больше восемнадцати процентов от общего числа браузеров, а «Оперой» пользуются единицы её давних фанатов.
Лидирует Google Chrome, о грамотной работе которого с системными ресурсами слагают легенды. Давайте сравним.
Действительно — легенды. Практически такая же картина: около 900 МБ в сумме — и только потому, что несколько страниц никак не желали загрузиться до конца. Обратите внимание, что число процессов с названием chrome.exe на три больше числа открытых в браузере вкладок. Затрудняюсь объяснить этот факт. Если посмотреть в диспетчере задач ниже, то мы увидим дополнительные процессы, ассоциированные с браузером Chrome, которые тоже отъедают память. Например, Google Updater. Иными словами, в моём микротесте всем трём браузерам потребовалось примерно одинаковое количество оперативной памяти.
При специальном исследовании версия 23 браузера Firefox вела себя как программа из анекдота — занимала столько памяти, сколько найдёт. Двадцать четвёртая начинала демонстрировать такое же поведение, но потом быстро избавлялась от неактуальных данных. Тестовая двадцать шестая версия под кодовым названием «Аврора» и вовсе должна явить чудеса оптимизации.
Её релиз запланирован на декабрь. Согласно предварительной информации с портала разработчиков, в оперативной памяти будут оставаться только видимые в данный момент изображения (похожий метод оптимизации используется в компьютерных играх). Разработчики считают, что Firefox версии 26 даже при открытии сотни тяжёлых сайтов в каждый момент времени будет требовать не более половины гигабайта ОЗУ. Самое удивительное, что при снижении потребления браузером оперативной памяти в разы прокрутка веб-страниц должна оставаться плавной.