Резкий скачок потребления памяти только в браузере Opera - PullRequest
0 голосов
/ 06 мая 2020

Обновление

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

Старый пост

У нас есть расширение chrome со следующей функцией. Его задача - дождаться отображения ключевого элемента и запустить обратный вызов.

function waitPageToComplete(key, callback) {
    let timerId = setInterval(function () {
        if (document.querySelector(key)) {
            clearInterval(timerId);
            callback(key);
        }
    }, 500);
}

Функция вызывается при возникновении события complete.

// backgroud.js
function onTabsUpdated(tabId, changeInfo, tab) {
    if (changeInfo.status == 'complete') {
        chrome.tabs.sendMessage(tabId, { message: 'complete' });
    }
}

// content-script.js
function onBackgroundMessage(request, sender, sendResponse) {
    if (request.message == 'complete') {
        waitPageToComplete(someKey, someCallback);
    }
}

Браузер Opera

  1. Поставьте точку останова в любой строке функции waitPageToComplete:

  2. Refre sh page. Поймайте точку останова и нажмите продолжить. Потребление памяти составляет ~100mb (диспетчер задач Opera)

  3. Go на другую страницу того же сайта.

  4. Поймать точку останова. Память до 1,5gb.

Что случилось? Если точки останова нет, то это тоже происходит. Но не каждый раз. С точкой останова постоянно.

Chrome браузер

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

  • Windows 7, x64

  • Chrome 81.0.4044.138, x64

  • Опера 68.0.3618.63, x64

...