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

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

    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!

    Комментарии 94

    • НЛО прилетело и опубликовало эту надпись здесь
        0
        Если бы повторное обращение чем-то отличалось от первого…
        +25
        Наблюдаем.Охреневаем.Терпим.
          –1
          Наблюдаем. Охромиваем. Терпим.
          +29
          И кто-то после этого ещё говорит, что огнелис много памяти жрёт…
            +1
            Все дело в подходе. Отдал разработку в руке сторонних разработчиков — получил косяки с утечкой памяти, производительность и т.п. Я не говорю что все нужно делать самим, просто это данность.

            P.S. Пользуюсь обоими браузерами в соотношении Firefox\Chrome = 80 \ 20
              +5
              Несомненно, однако хром, при том, что съедает немерено памяти, остается достаточно отзывчивым и шустрым, чего нельзя сказать об огнелисе.
                0
                Вот придёт эра e10s и лиса хвост распушит во всю свою красу.
                  +1
                  не скажите, когда он отъедает много памяти он перестаёт быть отзывчивым и шустрым, что собственно очень раздражает.
                    0
                    По личному мннию Хром при прочих равных намного позже отъедает много памяти. Собственно, fx 6.0 у меня ночь не может прожить — ложусь спать, читая сайт, утром просыпаюсь какая-то критическая ошибка, фоксу надо перезапустится и не плохо бы отправить отчёт в мозиллу — так он даже не перезапускается.
                      +2
                      Что-то вы гоните на лису, у меня 3.6.20 неделями работает. С 6й тоже проблем не было. Память, кушает, но за пол-гига не вылезает. ЧЯДНТ?
                        –1
                        3.6.х с весны (кажется) не юзаю, а вот 6.0 доставляет проблемы. Думал что из-за 100500 обновлений всего и вся поверх, плюс расширения фокса, но недавно новый винт купил и всё поставил с нуля. Работать система в общем стала шустрее, как и сам фокс, но вылеты остаются — гиг оперативки, 4 своп раздел, обычный режим работы 20-30 вкладок (из них хабра штук 10) — фокс, без расширений вообще (кроме дефолтных) ночь не переживает, хотя, вроде, своп не кончается.
                          +2
                          Странно. У меня на нетбуке Firefox намного отзывчивее Chrome. Например, Chrome, в отличие от Firefox, не позволяет сделать ничего с содержимым страницы (прокрутить, нажать на ссылку), если грузится новая вкладка. Постоянно вылезает эпичное окошко о зависании всех вкладок. Бешеные тормоза начинаются уже от 5-6 вкладок, в то время как Firefox легко тянет штук 20.
                            0
                            Может в ОС дело — у меня Ubuntu 32-bit
                        0
                        Примерно из-за постоянных проблем не обновляюсь с 3.хх. Функций ее хватает, файрбаг и прочие нужные плагины работают, и это хорошо. Без остального жил и дальше наверное смогу.
                          0
                          HTML5 наступает, долго не сможете
                            0
                            наверняка будет плагин поддержки хтмл5 и для старых версий
                              0
                              Зачем? Старыми версиями почти никто не пользуется (и чем дальше — тем меньше)
                              Стабильность, по моим субъективным ощущениям, только повышается. Вот щас на 10-й найтли сижу, за 2 месяца ночнушек 1 раз с ошбкой вылетало ;)
                      0
                      НАЧАЛОСЬ
                        0
                        согласен! у себя наблюдаю такую же картину. броузер неделями! работает без перезагрузки, и возможно он есть памяти однако он при этом не так тормозит как лиса
                      +1
                      Последний хром на Ubuntu 11.04: Browser — 100Mb, AdBlock — 28Mb, Flash — 12Mb, Яндекс Бар — 12Mb, табы гугла и хабра по 50Mb, и кучка ещё по мелочи (Всего 300Mb). Приложения запущенными не остаются. Хром работает уже 21 час.
                        0
                        У меня так раньше было. Но после перехода на 64 платформу стало все в 3 раза больше. Ну и ладно, думаю я…
                          +1
                          21 час не срок. Вот раз-два в неделю его точно приходится рестартовать :(
                            0
                            Я просто недавно ребутился, обычно по несколько недель живёт без ребутов. Кстати последние версии бесполезно рестартовать, в них расщирения даже после закрытия хрома живут.
                              0
                              Есть рещз или Диспетчер задач, чтоб убить всё, связанное с хромо.
                          0
                          Открою страшную тайну, следующие версии хрома будут загружаться при старте ОС и не будут выгружаться из памяти при закрытии браузера. Это относится к расширениям использующим фоновые страницы. Привет Хромос поверх любой ОС.
                            +1
                            Прув?
                            0
                            Там ничего не написано про старт системы. А фоновая работа при закрытом браузере есть уже сейчас и отключается одной галкой.
                              0
                              Стартует вместе с системой, если это принудительно не выключить.
                                0
                                Наверное, хром не читает, что там не написано, и спокойно себе с системой грузится. Заметил это, когда запуск системы стал неожиданно задумчивым. И оказалось, что хром подгружает все! расширения с запуском. Только тогда полез в настройки и увидел, что такое поведение можно отключить.
                                  –1
                                  Я отключил её сразу как только заметил, что значёк Хрома появился в трее. Вообще штука полезная и я не отказался бы от некоторых процессов в фоне (например, можно закрыть браузер и слушать Google Music), но их аппетит памяти всё портит.
                              0
                              А у оперы есть аналогичная страница chrome://memory-redirect/?
                                0
                                Есть, например, opera:memdebug.
                              • НЛО прилетело и опубликовало эту надпись здесь
                                  –8
                                  люди, судящие о потреблении памяти по цифрам в диспетчере задач, немножко идиоты.
                                    +7
                                    Люди, судящие о других людях исключительно по их отношению к цифрам в диспетчере задач — немного странные…
                                      –1
                                      Системным диспетчером задач — возможно (и то, если понимать что к чему — то по его данным можно делать выводы правильно), но вот насчет хромовского — не согласен.
                                        +1
                                        я сужу по htop :)
                                          0
                                          Или как вариант — по conky. =)
                                        +1
                                        А сколько у вас расширений? Неуместно требовать безупречной работы от браузера с 20 расширениями, написанными разными авторами.
                                          0
                                          9 расширений. Естественно, что все расширения ведут себя по-разному. И я бы не задавал глупых вопросов, если бы разные расширения вели себя по-разному одинаково.
                                          • НЛО прилетело и опубликовало эту надпись здесь
                                            –2
                                            бррр
                                            image
                                              –2
                                              извините, дурак не пользуюсь предпросмотром=)
                                              image
                                                –1
                                                в общем gyazo хостинг разочаровывает все бOльшими бОльшими ограничениями:(
                                                обычная ссылка gyazo.com/e3d8bc03b61f98b9f0b8465db6eed8bd
                                                  +1
                                                  аж карму сливают, за неправильные ссылки, злые люди по понедельникам видать:)
                                                    +1
                                                    Вы прочитали диалог шизофреника с самим собой.
                                              0
                                              В хроме под линуксом такого не наблюдается.
                                              • НЛО прилетело и опубликовало эту надпись здесь
                                                  –5
                                                  Все нормально! Гугл тоже был маленьким поисковиком, а сейчас он топ1 в инете. Как говорится — яблочко от яблони далеко не падает.
                                                    +3
                                                    То есть приложения не освобождают память от лишнего мусора?
                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                        0
                                                        80мб? Если грубо округлить, это 83миллиона байт, если бы это был текст в формате юникода, это было бы больше 40миллионов символов.
                                                        Даже число 5м (для 10мб) это большое количество информации.

                                                        Лично я предполагаю что при написании этих плагинов, никто не думал об их эффективности, как всегда впрочем.
                                                      +3
                                                      Issue 98670: Memory is not released when the app closed (мой перевод части ответа):
                                                      TweetDeck и Offline Gmail используют функции API, которые оставляют приложения в фоне, так что это логика работы приложений.

                                                      То есть, не все приложения остаются в фоне, а только те, что сознательно это делают с помощью API. Стоило бы написать об этом в топике, так как те, кто не читал issue могут неправильно понять ситуацию.
                                                        0
                                                        Забавно то, что вы это заметили только после открытия диспетчера задач, может оно действительно так задумано? :)
                                                          +2
                                                          наблюдаете ли вы у себя подобное поведение расширений/приложений?
                                                          наблюдаем. переходим обратно на лису, которая, вроде как, начала быть более требовательной к ресурсам.
                                                          не холивара ради:)
                                                            +1
                                                            Наверно, менее требовательной, ну или более толерантной? :)
                                                              +1
                                                              ой, да, перепутал
                                                              имелось в виду менее требовательной:)
                                                            +5
                                                            Все, наверно, просто. Для приложений Chrome можно создать background страницу, где будут выполнятся фоновые задачи — code.google.com/chrome/extensions/background_pages.html При запуске приложение, похоже, в данную страницу выгружаются данные в обьекты js, но не освобождаются, когда приложение закрыто — оно дальше оперирует с этими данными.
                                                              0
                                                              спасибо, добавил в топик!
                                                              +8
                                                              Сколько стоит кофе в Старбаксе России? Рублей 300? А планка памяти на 4 Гб — 600 рублей. Имхо, пусть потребляет чего там ему надо, лишь бы работал шустро и не глючил.
                                                                +5
                                                                <offtop>Недавно тоже хотел таким образом решить свои проблемы. У материнки оказался предел 4G двумя планками. Увы, но меньше чем $500-600 мне теперь не отделаться.<offtop>
                                                                  –1
                                                                  Мне без memory mapping вообще выше 3.25 не поднятся. Так что там на счет 600 рублей было в начале ветки?
                                                                +1
                                                                Я, кстати, сейчас прям разрабатываю свой екстеншен (на хром-хакатоне начали, вот может на GDD2011 покажу, если пройдет фильтр), так я специально зная про эту проблему в бекграунд-пейдже держу только самые важные объекты — текущее состояние.

                                                                В остальное динамически подгружается и освобждается в попапе. Чего и рекомендую всем экстеншен-писателям :)
                                                                  0
                                                                  Согласен, что нужно освобождать, но здесь есть как-бы тонкая грань между скоростью и памятью.

                                                                  По сути, можно ввести настройку в приложение — экономия памяти, но тогда возможны притормаживания. И каждый будет выбирать, что ему удобно.
                                                                  +4
                                                                  Вижу большую концентрацию вентиляторов в топике, потому отвечу по возможности максимально корректно. Все действительно зависит (как и обычно) от создателей расширений и приложений. То, что в фоне приложение начинает неистово жрать память возможно только «by design». Сам я автор приложения vkoffline и знаю не понаслышке, что такое прожроливость в плане памяти.

                                                                  С другой стороны, не стоит сваливать на хром такие косяки. В настоящий момент я работаю над уменьшением потребления памяти в приложении. В этом плане есть просто море аспектов и возможностей. В частности, в фоне приложение спокойно посылает LongPoll-запросы к серверу (сейчас), и потребление памяти за день вообще не вырастает, что только доказывает хорошую работу GC в Chrome.

                                                                  Есть и другая сторона фоновой работы приложений, о которой почему-то не говорят любители других браузеров. Хром как известно уже больше, чем просто браузер. Во всем известной ОС он является аналогом проводника и finder'а, что возлагает на него дополнительные требования. Потому воспринимайте фоновые приложения в Хроме как работу тех же фоновых приложений в windows, например тот же dropbox.

                                                                  Подводя итоги: как и всегда, потребление памяти всегда зависит от разработчика. Если приложение активно жрет память будучи закрытым, но работая в фоне, есть высокая вероятность, что разработчику надо оторвать руки и пришить куда надо.
                                                                    0
                                                                    Далеко не всем нужны эти его расширенные возможности. Сидит-то большинство отнюдь не под хромосом, и проводники свои есть, вместе с сервисами (писаными не на javascript).
                                                                      0
                                                                      Каждому как обычно свое. Кто-то покупает дополнительный винчестер для своей музыки и данных, и хранит все на нем, а кто-то покупает расширенный аккаунт в дропбоксе и пользуется «облачными» сервисами.

                                                                      > вместе с сервисами (писаными не на javascript)
                                                                      Вы так говорите, как будто javascript — это что-то плохое :)
                                                                    +1
                                                                    В течение рабочего дня несколько раз перегружаю браузер. Так и живём.
                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                        +3
                                                                        8GB оперативы и 3 одновременно запущенных браузера с большим кол-вом вкладок — проблем не замечаю :)
                                                                          +1
                                                                          xxx: да я за последние пять лет, тока родными дровами пользуюсь, и не надо никаких свежих дров, все и так прекрасно работает!!!
                                                                          yyy: молчи уже, за пять лет ты три новых компа купил, мажор!
                                                                            0
                                                                            <зануда>Если быть точным, то за последние 5 лет, это единственный купленный мною компьютер (если точнее — то ноут).</зануда>

                                                                            На самом деле все зависит от ваших нужд — кто-то может не менять комп и 10 лет, а кому-то ежегодно приходится если не новый покупать, то как минимум апгрейдиться.

                                                                            У меня в «среднем» запущено 3 браузера, IDE, Photoshop, Skype (который на маке очень даже прожорливый), плюс очень часто виртуалка с Виндовс 7.
                                                                              0
                                                                              <offtop>Прожорливый Skype? Учитывая что вы сказали 5 лет, предположу, что у вас либо старая Mac OS либо старый скайп, либо всё вместе. У меня 60 метров оперативы этот «прожорливый» скайп кушает</offtop>
                                                                                0
                                                                                А! Простите я понял. Вы наоборот — недавно новый Бук Прошку купили. Тогда странно. Обновите скайп :)
                                                                                  0
                                                                                  Да, год назад MC375 или как его там.

                                                                                  Скайп последний, но кушает 150 оперативы и 150 виртуальной, что по-моему очень не мало.

                                                                                  Я уже не говорю о том, чтобы подгрузить историю переписки за полгода с человеком, с которым много переписываешься — у меня скайп задумывается (со 100% загрузкой проца) где-то минут на 15!!! Это что можно делать столько времени???
                                                                                    0
                                                                                    Значение виртуальной не показывает ничего. 150 Mb реальной это не мало, но и не много для современной программы. Что до истории — похоже у вас либо винт медленный либо состарился либо сильно фрагментирован.
                                                                                      0
                                                                                      Ключевое в моем предложении это «у меня скайп задумывается (со 100% загрузкой проца)»

                                                                                      По поводу винта — у меня SSD 128GB, на скорость которого не жалуюсь :)
                                                                                        0
                                                                                        Inter, Crucial? Если нет, то может он здыхает уже.
                                                                              +1
                                                                              Проблем не замечаю, из расширений только timeStats
                                                                              постоянно открыто около 10 вкладок, из них 3 — флешки.
                                                                                +1
                                                                                4-5 Окон по 20-30 вкладок, хром сожрал полтора гиг оперативы. Из шестнадцати. ФФ — 2.8 гб на тех же табах и ещё потёк в память, а потом скрашился. Так что пока всё нормально :)
                                                                                  0
                                                                                  Помнится не так давно проводил небольшой тест. ФФ без расширений при 100 открытых страницах кушал порядка 5-6мб на вкладку. С расширениями — 7-8мб.
                                                                                  Хром без расширений кушал 7-8мб. С 5 расширениями — 30мб. С 10 — был убит oomkiller'ом.
                                                                                    +1
                                                                                    Поставьте 15. Тогда oomkiller поймёт что лучше сотрудничать.
                                                                                    0
                                                                                    Не вижу причины переживать по поводу прожорливости к памяти. Именно для этого уже много лет людям предлагается перейти на 64-битные ОС. Те кто отказывается, сами себе создают проблемы. Я конечно понимаю, что бывают разные старые драйверы и прочие причины не делать этого. Но по моему ощущению проблемы часто преувеличены. Поскольку с 64-битностью сам вожусь давно, то уже несколько лет дома и на работе использую исключительно 64-битные ОС. Везде как минимум 4 ГБ памяти (на ноутбуке). И это очень комфортно. Давно забыл, как что-то тормозит из-за нехватки памяти. В том числе и не интересует, сколько потребляем Chrome. При этом тратя память часто действительно проще написать некоторую функциональность или ускорить многие алгоритмы.
                                                                                      0
                                                                                      лично меня останавливает от перехода на х64 отсутствие нормального флеша. Но когда-нибудь перейду, конечно. И на ИПв6 тоже
                                                                                        0
                                                                                        А потом на HTML5, CSS3 и интернет без IE6. Сразу после светлого коммунистического будущего.
                                                                                        Это все конечно шутка, но флеш х64 уже все ждут и ждут, а продвижения все нету и нету в этом направлении, как это не печально.
                                                                                          0
                                                                                          ну если мир захочет отказаться от флэша вообще (например, в пользу HTML5), то я буду в числе первых. Это ускорило бы переход на х64 :)
                                                                                          0
                                                                                          А что мешает в х64 оси работать с х86 пакетом?
                                                                                            0
                                                                                            черезжопность решения. Но вы поздно пишете — я уже прочитал, что Адоб представил релиз 64-битного плеера.
                                                                                              0
                                                                                              Не знаю, в чём черезжопность. Windows — это не макось, всех сразу на х64 не пересадишь :( (А хотелось бы, глядишь и игроделы проснутся).
                                                                                          0
                                                                                          А я вот переживаю! Unity3d + Visual Studio + Firefox + Skype( жрет 300MB!!! ) + само разрабатываемое приложение и 4GB не хватает. Приходится закрывать вкладки в Firefox, файлы в VS, перезагружаться и тд
                                                                                          Напрягает :(
                                                                                        • НЛО прилетело и опубликовало эту надпись здесь
                                                                                            0
                                                                                            Отключение галочки не помогает?

                                                                                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                            Самое читаемое