Потребление памяти мобильным webkit - PullRequest
8 голосов
/ 23 марта 2012

Мы работаем над приложением HTML5 для мобильных устройств (Android + iOS).Но большая проблема заключается в потреблении памяти - объем используемой памяти очень быстро растет, и приложение становится медленным.

Каковы лучшие практики, советы, инструменты, решения и т. Д. Для борьбы с утечками памяти в HTML (JavaScript)приложения?

PS Мы ориентируемся только на браузеры Webkit

Ответы [ 2 ]

7 голосов
/ 06 мая 2012

Недавно было несколько действительно хороших статей на эту тему.Есть несколько действительно удивительных источников создания объектов, которые действительно не привлекают вашего внимания, если вы не настроены на это.Как правило, проблема не в использовании памяти, а на самом деле циклы сбора мусора, необходимые для сбора памяти, из которой медленно вытекает приложение.

Эта статья - лучшая из тех, что я недавно прочитал по этой теме: http://www.scirra.com/blog/76/how-to-write-low-garbage-real-time-javascript

Что касается инструментов для борьбы с / диагностики проблемы, на ум приходит Google Chrome Speedtracer.Конечно, настройка для Chrome не гарантирует настройки для всех браузеров, но большинство вещей, которые приводят к созданию объектов в Chrome, являются общими для спецификации JS, поскольку она реализована во всех браузерах.

Одна важная вещьСледует учитывать, что использование ОЗУ и ОЗУ видео не совпадают.Один из лучших способов - определить, какие части вашего пользовательского интерфейса ускоряются аппаратно, и убедиться, что они маленькие (то есть умещаются на экране сразу).Если у вас есть огромная часть прокрутки аппаратного ускорения экрана, вы получите разрывание / разбиение графического процессора и медленную прокрутку.Вы можете обнаружить это частично с помощью симулятора iOS.В этой статье кратко описывается эта идея: http://devinsheaven.com/turn-your-iphone-wacky-and-make-your-iphone-application-better/

Наконец, в JavaScript есть множество действительно распространенных шаблонов утечки памяти, с которыми время от времени сталкивается каждый инженер.У IBM есть хороший список из них.Я не могу опубликовать более двух ссылок, потому что я n00b, но вы можете найти в Google "Общие утечки памяти JavaScript", и это, вероятно, первый результат.

3 голосов
/ 22 марта 2013

Некоторые другие диагностические инструменты, которые могут оказаться полезными в Chrome, - это диспетчер задач, панель времени и профилировщик кучи.

Браузер - Chrome Canary (27.0.1447.3 канарейка)

  • Диспетчер задач: выберите Сервис -> Диспетчер задач // Щелкните правой кнопкой мыши вкладку заголовков и выберите «Память JavaScript»

  • Вкладка «Временная шкала»: «Инструменты» -> «Инструменты разработчика» -> «Временная шкала» // Нажмите «Запись», выполните некоторые действия, затем остановите запись

  • Heap Profiler: Инструменты -> Инструменты разработчика -> Профили // Нажмите «Сделать снимок кучи»

  • Удаленная отладка

  • Deep Memory Profiler

Техника «3 снимка» // Презентация «Устранение утечек памяти в Gmail»

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...