Циклы простоя («ничего не делая») также будут отображаться как «(программа)» (вы можете профилировать эту страницу SO в течение нескольких секунд и получить 100% (программа) ), так что это не признак чего-то плохого в себе.
Другое дело, когда вы действительно видите, что ваше приложение отстает. Тогда (программа) будет добавлен с помощью кода привязок V8 (и кода WebCore, который они вызывают, который по сути является чем-нибудь: операциями DOM / CSS, рисованием, выделением памяти и GC, что нет.) Если это так В этом случае вы можете записать Временную шкалу вашего приложения (переключитесь на панель Timeline
в Инструментах разработчика и нажмите кнопку Record
в нижней строке состояния, затем некоторое время запустите ваше приложение.) Вы увидите много внутренних событий с их временными рамками в виде горизонтальных полос. Вы увидите перекомпоновки, перерасчеты стилей, срабатывание таймеров, события GC и многое другое (кстати, в последних версиях Chromium улучшена временная шкала использования профилировщика памяти, так что вы также сможете отслеживать память, используемую определенными внутренними факторами.)
Для диагностики проблем с памятью (многократное распределение, влекущее за собой несколько полных циклов GC), вы можете использовать панель Profiles
. Сделайте снимок кучи до того, как начнется интенсивная часть вашего кода, и еще один после того, как этот код запустится в течение некоторого времени. Затем сравните два кучи (правый SELECT внизу), чтобы увидеть, какие выделения произошли, а также их влияние на память.