Недавно было несколько действительно хороших статей на эту тему.Есть несколько действительно удивительных источников создания объектов, которые действительно не привлекают вашего внимания, если вы не настроены на это.Как правило, проблема не в использовании памяти, а на самом деле циклы сбора мусора, необходимые для сбора памяти, из которой медленно вытекает приложение.
Эта статья - лучшая из тех, что я недавно прочитал по этой теме: 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", и это, вероятно, первый результат.