Используйте инструмент профилировщика выделения, чтобы найти объекты, которые не подвергаются сборке мусора должным образом, и продолжать сохранять память.
Как работает инструмент
Профилировщик распределения объединяет подробную информацию моментального снимка профилировщика кучи с инкрементным обновлением и отслеживанием панели Timeline . Подобно этим инструментам, отслеживание распределения кучи объектов включает в себя запуск записи, выполнение последовательности действий, а затем остановку записи для анализа.
Инструмент периодически делает снимки кучи на протяжении всей записи (каждые 50 мс!) и один последний снимок в конце записи.
Включить профилировщик распределения
Чтобы начать использовать профилировщик распределения:
- Убедитесь, что у вас установлена последняя версия Chrome Canary .
- Откройте Инструменты разработчика и щелкните значок шестеренки в правом нижнем углу.
- Теперь откройте панель «Профилировщик», вы должны увидеть профиль под названием «Выделение кучи записей».
Чтение профиля распределения кучи
Профиль распределения кучи показывает, где создаются объекты, и определяет путь их хранения. На снимке ниже полоски вверху указывают, когда в куче обнаруживаются новые объекты.
Высота каждой полосы соответствует размеру недавно выделенных объектов, а цвет полос указывает, активны ли эти объекты в окончательном снимке кучи. Синие полосы обозначают объекты, которые все еще активны в конце временной шкалы. Серые полосы обозначают объекты, которые были выделены во время временной шкалы, но с тех пор были удалены мусором:
На снимке ниже действие было выполнено 10 раз. Пример программы кэширует пять объектов, поэтому ожидаются последние пять синих полос. Но крайняя левая синяя полоса указывает на потенциальную проблему.
Затем вы можете использовать ползунки на временной шкале выше, чтобы увеличить масштаб этого конкретного снимка и увидеть объекты, которые недавно были выделены в этот момент:
Если щелкнуть конкретный объект в куче, в нижней части снимка кучи отобразится его сохраняющее дерево. Проверка пути сохранения объекта должна дать вам достаточно информации, чтобы понять, почему объект не был собран, и вы сможете внести необходимые изменения в код, чтобы удалить ненужную ссылку.
Просмотр распределения памяти по функциям
Вы также можете просмотреть распределение памяти с помощью функции JavaScript. Дополнительные сведения см. в разделе Исследование распределения памяти по функциям .