Возможная утечка памяти при использовании скрипта с расширением chrome - PullRequest
0 голосов
/ 01 июня 2019

У меня проблема с расширением памяти.Вот сценарий.На каждой вкладке с 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, чтобы проверить, есть ли утечка памяти enter image description here

Реальный сценарий: открытие нескольких iFrames на разных вкладках (5-10) Javascript Memory около 120 МБ enter image description here

Не удается ли Chrome удалить iFrames из памяти с помощью GC?


Обновление 1: понедельник, 03 июня 2019 г.

Memory Profiler с JS VMIntance enter image description here

Обновление 2:

enter image description here Это скриншот:

  • top: вкладка расширения памяти в фоновом режиме
  • снизу: скрипт содержимого вкладка памяти iFrame
  • середина: диспетчер задач

Что будет означать высокий объем памяти из 214 МБ, когда экземпляр виртуальной машины Javascript для iframe background и content_script имеет низкое значение?

Обновление 3:

enter image description here Глядя на Heap snapshot, явидя Detached HTMLDivElements увеличение.Это требует от пользователя взаимодействия с iFrame.Это приложение React, любопытно, если это проблема React или Chrome не удаляет элементы.Обратите внимание на последний снимок.Я нажал Собрать мусор , но без изменений

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...