xaker

AdBlock Plus пожирает оперативную память

  • пятница, 16 мая 2014 г. в 03:10:44
http://www.xakep.ru/post/62502/

Фильтры рекламы вроде AdBlock и AdBlock Plus (ABP) считаются стандартными расширениями браузера, которые устанавливают почти все продвинутые пользователи. Вот и австралийский программист Николас Нетеркот (Nicholas Nethercote) привык к ABP и каждый раз удивляется обилию рекламы на веб-страницах, если приходиться садиться за чужой компьютер. Неудивительно, что AdBlock Plus — самое популярное расширение для Firefox, его аудитория — почти 19 млн пользователей, это примерно втрое больше, чем у второго по популярности расширения.

ABP предотвращает загрузку многих графических элементов и анимации, прожорливой к потреблению оперативной памяти. Казалось бы, потребление RAM и нагрузка на CPU должны уменьшиться. Но в реальности всё наоборот, пишет Нетеркот. Он подчёркивает, что ничего не имеет против такого «обмена», в принципе. Как и миллионы людей, он готов пожертвовать некоторым количеством RAM в обмен на блокировку рекламы. Просто сама ситуация странновата: контента загружается меньше, но нагрузка на системные ресурсы растёт. В некоторых случаях очень значительно.

В частности, непосредственно после активации расширения ABP количество свободной памяти сразу уменьшается на 60-70 МБ. Это скрипты из фильтров ABP.

Во-вторых, дополнительно выделяется около 4 МБ на каждый iframe. Это связано, главным образом, с загрузкой гигантской таблицы стилей в каждый фрейм. ABP делает это для скрытия элементов, которые невозможно блокировать. На некоторых веб-страницах очень много фреймов, тогда утечка памяти приобретает серьёзный характер. Николас Нетеркот приводит пример сайта TechCrunch. Если загрузить страницу и поводить мышью над кнопками социальных сетей (при этом загружается много посторонних скриптов), то потребление памяти без расширения ABP составляет 194 МБ. С блокировкой рекламы потребление возрастает вдвое до 417 МБ. И это после вырезания рекламных баннеров!

Ещё более экстремальный пример — эта страница с более 400 фреймами. Без ABP она занимает 370 МБ в памяти, а с ним — 1960 МБ.

Таким образом, иногда можно ускорить работу браузера, отключив фильтры рекламы. А пользователям Firefox полезно знать, что в утечках памяти не всегда виноват сам браузер.