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