Pull to refresh

Потребление памяти в фоновом режиме

Reading time 2 min
Views 35K
В Хроме есть такая замечательная вещь, как приложения и расширения. И они могут замечательным образом работать в фоновом режиме.

Chrome уже давно обогнал firefox по потреблению памяти в схожих условиях, но то, что я увидел на прошлой неделе, поразило меня до глубины души.

Так вот о работе в фоне.
Зайдя на страничку chrome://memory-redirect/, я обнаружил, что Хром сожрал гиг оперативки. Ладно, открыл я много вкладок, хрен с ним. Но кроме этого, я обратил внимание на странный факт. Некоторые приложения, будучи закрытыми, потребляли от 50 до 100 Мб ОЗУ.


Я решил проследить, как это получается.
Первое, что я сделал, это убил все «тяжелые» фоновые страницы и перезапустил их. Изменение вы можете наблюдать ниже. В процессе серфинга (но без обращений к приложениям) эти цифры не менялись:


Дальше я перезапустил браузер. При открытии браузера в основном все расширения и приложения, работющие в фоне потребляют от силы 10 Мб на харю.


Так продолжается до тех пор, пока вы не начнете приложением активно пользоваться. «Погоняв» тот же tweetdeck в течении десяти минут, я вывел потребление памяти на 80 Мб. Закрыв приложение, в течение всего дня потребление оперативки почти не снизилось. Хотя как бы чего ему делать в фоне?!

Офлайн-клиент Gmail вроде как понятно чем занимается в фоне, но опять же, работая в фоне до первого обращения к приложению, потребление памяти остается в пределах 15-25 Мб, а в режиме «после закрытия» — в два раза больше.

Оформив заявку, я получил ответ, что, мол, «this is by design». То есть, часть приложений, в частности tweetdeck и gmail используют background.html страницу, которая подгружается при старте работы браузера и работает в фоне до тех пор, пока вы ее из фона не выгрузите. Подробнее здесь и здесь.

У меня вопрос ко всем пользователям Google Chrome/Chromium: наблюдаете ли вы у себя подобное поведение расширений/приложений?

UPD: Все, наверно, просто. Для приложений Chrome можно создать background страницу, где будут выполнятся фоновые задачи — code.google.com/chrome/extensions/background_pages.html При запуске приложение, похоже, в данную страницу выгружаются данные в обьекты js, но не освобождаются, когда приложение закрыто — оно дальше оперирует с этими данными. Спасибо, le0pard!
Tags:
Hubs:
+41
Comments 94
Comments Comments 94

Articles