5

Я хотел бы найти способ в любом обозревателе рабочего стола определить, какие объекты, выделенные JavaScript, являются , освободили путем сбора мусора. Обратите внимание, что я не пытаясь отслеживать «утечки». Утечки - это объекты, которые не освобождаются.Определить, какие объекты JavaScript были освобождены GC

В Firefox, веб-приложение, я смотрю иногда заикается (перестает отвечать на нажатия клавиш на> 1 секунду); профилирование показывает, что за это время браузер выполняет длительный GC. За предыдущие несколько секунд был добавлен значительный объем памяти (в небольших кусках, не все сразу). Когда GC происходит, почти вся эта память освобождается.

Что я пытаюсь выяснить: все эти недолговечные объекты, во всяком случае? Я хотел бы знать их ценности, их типы или где в JS они были выделены.

Веб-приложение демонстрирует эти же шаблоны распределения во всех браузерах (хотя только Firefox, похоже, страдает от продолжительного GC); поэтому я бы с радостью использовал любой браузер (Mac или Windows) для его отладки.

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

ответ

0

GC - это только конец жизненного цикла. В начале есть выделения.

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

+0

Можете ли вы привести пример того, что вы имеете в виду? Если вы говорите о кнопке «Record Heap Allocations», как я могу использовать это, чтобы показать мне все распределения (в том числе те, которые заканчиваются получением GC'd)? –

+0

https://developer.chrome.com/devtools/docs/javascript-memory-profiling#object-allocation-tracker – the8472

+0

, по крайней мере, для версии FF dev также должна быть запись стека распределения – the8472

Смежные вопросы