В Хроме есть такая замечательная вещь, как приложения и расширения. И они могут замечательным образом работать в фоновом режиме.
Chrome уже давно обогнал firefox по потреблению памяти в схожих условиях, но то, что я увидел на прошлой неделе, поразило меня до глубины души.
Так вот о работе в фоне.
Зайдя на страничку chrome://memory-redirect/, я обнаружил, что Хром сожрал гиг оперативки. Ладно, открыл я много вкладок, хрен с ним. Но кроме этого, я обратил внимание на странный факт. Некоторые приложения, будучи закрытыми, потребляли от 50 до 100 Мб ОЗУ.
![](https://habrastorage.org/r/w1560/storage1/075eda85/297c38f2/fa91f554/aaf5963f.png)
Я решил проследить, как это получается.
Первое, что я сделал, это убил все «тяжелые» фоновые страницы и перезапустил их. Изменение вы можете наблюдать ниже. В процессе серфинга (но без обращений к приложениям) эти цифры не менялись:
![](https://habrastorage.org/r/w1560/storage1/0d565a77/3b83ecfd/34a36cfe/c599022d.png)
Дальше я перезапустил браузер. При открытии браузера в основном все расширения и приложения, работющие в фоне потребляют от силы 10 Мб на харю.
![](https://habrastorage.org/r/w1560/storage1/032a35f0/729a51e1/0924b4eb/8aa5e002.png)
Так продолжается до тех пор, пока вы не начнете приложением активно пользоваться. «Погоняв» тот же 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!
Chrome уже давно обогнал firefox по потреблению памяти в схожих условиях, но то, что я увидел на прошлой неделе, поразило меня до глубины души.
Так вот о работе в фоне.
Зайдя на страничку chrome://memory-redirect/, я обнаружил, что Хром сожрал гиг оперативки. Ладно, открыл я много вкладок, хрен с ним. Но кроме этого, я обратил внимание на странный факт. Некоторые приложения, будучи закрытыми, потребляли от 50 до 100 Мб ОЗУ.
![](https://habrastorage.org/storage1/075eda85/297c38f2/fa91f554/aaf5963f.png)
Я решил проследить, как это получается.
Первое, что я сделал, это убил все «тяжелые» фоновые страницы и перезапустил их. Изменение вы можете наблюдать ниже. В процессе серфинга (но без обращений к приложениям) эти цифры не менялись:
![](https://habrastorage.org/storage1/0d565a77/3b83ecfd/34a36cfe/c599022d.png)
Дальше я перезапустил браузер. При открытии браузера в основном все расширения и приложения, работющие в фоне потребляют от силы 10 Мб на харю.
![](https://habrastorage.org/storage1/032a35f0/729a51e1/0924b4eb/8aa5e002.png)
Так продолжается до тех пор, пока вы не начнете приложением активно пользоваться. «Погоняв» тот же 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!