У меня проблема с расширением памяти.Вот сценарий.На каждой вкладке с CMD+SHIFT+K
вы можете открыть представление.Это представление представляет собой iFrame, внедренный с помощью скрипта содержимого.
После 15 секунд простоя iFrame удаляется.Когда расширение начинается впервые, Javascript Memory
составляет около 6MB .Но после удаления Javascript Memory
зависает 14MB
Это похоже на утечку памяти, но странно, когда я удаляю iFrame именно с этим фрагментом кода.
const cleanIFrame = () => {
let frames = document.querySelectorAll('#iframe-id');
for (let i = 0; i < frames.length; i++) {
let frameElement = frames[i];
if (frameElement.parentNode) {
frameElement.parentNode.removeChild(frameElement);
frameElement = null;
}
}
frames = null;
};
Вот скриншоты того, что я вижу в диспетчере задач
Открываем только один iFrame, чтобы проверить, есть ли утечка памяти
Реальный сценарий: открытие нескольких iFrames на разных вкладках (5-10) Javascript Memory
около 120 МБ
Не удается ли Chrome удалить iFrames из памяти с помощью GC
?
Обновление 1: понедельник, 03 июня 2019 г.
Memory Profiler с JS VMIntance
Обновление 2:
Это скриншот:
- top: вкладка расширения памяти в фоновом режиме
- снизу: скрипт содержимого вкладка памяти iFrame
- середина: диспетчер задач
Что будет означать высокий объем памяти из 214 МБ, когда экземпляр виртуальной машины Javascript для iframe background и content_script имеет низкое значение?
Обновление 3:
Глядя на Heap snapshot
, явидя Detached HTMLDivElements
увеличение.Это требует от пользователя взаимодействия с iFrame.Это приложение React
, любопытно, если это проблема React или Chrome не удаляет элементы.Обратите внимание на последний снимок.Я нажал Собрать мусор , но без изменений