Внедренный код IIFE вызывает большую утечку памяти? - PullRequest
1 голос
/ 13 мая 2019

Я пишу простое расширение для Chrome и столкнулся с очень странной проблемой.У меня есть код, который я внедряю, как этот

element.src = chrome.runtime.getURL('inject.js');
document.head.appendChild(element);

Injects.js сам:

(function() {
   //my code here
}());

Сам код ничего особенного, я использую код, похожий на monkeyPatch для исправления некоторых оригинальных функций страницы и получения от них данных о событиях, и мой код сам по себе имеет только одну анонимную функцию setTimeout{}, остальное - просто манипуляции с данными / DOM.

Теперьстранная вещь, если я изменяю функцию, в которую обертываю свой код, на пример IIFE:

(function () {
    //my code
})();

Я начинаю ощущать безумную утечку памяти, например, несколько Гб за 5-7 минут,

Я не очень разбираюсь в JS и его экосистеме - что может вызвать это? Я хотел бы понять это и избежать подобных проблем в будущем.Дайте мне знать, если потребуется больше контекста.


РЕДАКТИРОВАТЬ: 1.кто-то связался: Расположение скобок для автоматического выполнения анонимных функций JavaScript? Интересно, как это упоминается: Does the former take up memory by leaving around a global, anonymous function?

2.также это интересно: https://stackoverflow.com/a/3783287/8313379

Ни один из них не отвечает на мой вопрос, который действителен - 2 ГБ утечки памяти через 10 минут все еще здесь.

...