Проблема
Я разработал расширение, которое перехватывает веб-запросы, получает HTML-код веб-запроса и обрабатывает его.Я использовал DOMParser для разбора HTML, и я понял, что DOMParser вызывает серьезные проблемы с утечкой памяти, что в конечном итоге приводит к сбою расширения chrome.
Это код, который вызывает проблемы.https://gist.github.com/uche1/20929b6ece7d647250828c63e4a2ffd4
Что я пробовал
Dev Tools Записанная производительность
Я записал расширение Chrome, пока оно перехватывает запросы, и заметил, что в качестве метода DOMParser.parseFromStringбыло вызвано, тем больше было создано узлов и документов, которые не были уничтожены.
Скриншот инструментов разработчика https://i.imgur.com/pMY50kR.png
След памяти для диспетчера задач
Я посмотрел на диспетчер задачна chrome и увидел, что у него огромный объем памяти, который не уменьшится со временем (потому что сборка мусора должна начаться через некоторое время).Когда объем памяти становится слишком большим, расширение падает.
Снимок экрана памяти диспетчера задач https://i.imgur.com/c8fLWCy.png
Снимки кучи
Я сделал несколько снимков экрана до и после иЯ вижу, что проблема, похоже, связана с выделением HTMLDocuments, который не подвергается сборке мусора.
Снимок (до) https://i.imgur.com/Rg2CRi6.png
Снимок (после) https://i.imgur.com/UQgLuT1.png
Ожидаемый результат
Я бы хотел понять, почему DOMParser вызывает такие проблемы с памятью, почему он не очищается сборщиком мусора и что нужно делать для его устранения.
Спасибо