У меня есть довольно сложное приложение Javascript, у которого есть основной цикл, который вызывается 60 раз в секунду. Похоже, что происходит большая сборка мусора (на основе «пилообразного» вывода из временной шкалы памяти в инструментах разработчика Chrome) - и это часто влияет на производительность приложения.
Итак, я пытаюсь исследовать передовые методы сокращения объема работы, которую должен выполнять сборщик мусора. (Большая часть информации, которую я смог найти в Интернете, касается предотвращения утечек памяти, это немного другой вопрос - моя память освобождается, просто происходит слишком много сборок мусора.) Я предполагаю что это в основном сводится к максимально возможному повторному использованию объектов, но, конечно, дьявол кроется в деталях.
Приложение структурировано по «классам» в соответствии с «Простым наследованием JavaScript» Джона Ресига .
Я думаю, одна проблема заключается в том, что некоторые функции могут вызываться тысячи раз в секунду (поскольку они используются сотни раз на каждой итерации основного цикла) и, возможно, локальные рабочие переменные в этих функциях (строки, массивы и т. Д.) может быть проблема.
Мне известно об объединении объектов для более крупных / тяжелых объектов (и мы в определенной степени это используем), но я ищу методы, которые можно применять повсеместно, особенно в отношении функций, которые вызываются очень много раз в жестких циклах. .
Какие методы я могу использовать, чтобы уменьшить объем работы, которую должен выполнять сборщик мусора?
И, возможно, также - какие методы можно использовать, чтобы определить, какие объекты собираются мусором больше всего? (Это очень большая кодовая база, поэтому сравнение снимков кучи не очень плодотворно)