Потребление памяти мобильного веб-канала

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

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

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

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

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

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

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

Наконец, в JavaScript есть куча действительно распространенных ошибок памяти, которые каждый инженер время от времени сталкивается. У IBM есть хороший список. Я не могу опубликовать более двух ссылок, потому что я n00b, но вы можете google для «Common JavaScript Memory Leaks», и это, вероятно, первый результат.

Некоторые другие инструменты диагностики, которые могут быть полезны в Chrome, – это диспетчер задач, панель временной шкалы и куратор профилей.

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

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

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

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

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

  • Глубокий профайлер памяти

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

Intereting Posts