Как стать автором
Обновить

Комментарии 3

сталкивался с похожей задачей - найти утечки в хедлесс-хроме который запускается в контейнере, так и не смог найти внятный инструментарий, пришлось обходить другими путями

Теперь в большинстве случаев мы сразу можем указать разработчику, какой объект в каком модуле остается в памяти.

Так, а тут, пожалуйста, поподробней. Как из этого определить, какой объект в каком модуле?

На этом этапе выводим в сборке (рис. 7) все найденные пары из первого снапшота с указанием id объектов, в также путь до последнего четвертого снапшота. Сделано так специально, потому что по этим объектам уже много раз прошелся сборщик мусора и у них остались только связи, которые являются утечкой памяти. 

Берем id объекта, открываем самый последний снапшот, находим этот объект поиском.

Если код минифицирован, то можно по родителям/детям понять, что это за объект и модуль. Всегда есть что-то, что позволяет понять, что это за объект ("говорящие" методы, параметры, строки и тд). Можно открыть страницу и глобальным поиском в DevTools найти "говорящий" метод и модуль, где создается экземпляр с этим методом.

Если код неминифицирован - еще проще, там уже названия самих объектов обычно говорящие и можно даже по цепочке retainers увидеть, откуда этот объект создавался. Например, открыв наш пример и найдя объект с указанным id мы сразу увидим, что он называется child и он принадлежит массиву с наименованием array. (рис. 4)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий