我正在编写一个简单的chrome扩展程序,遇到了非常奇怪的问题。我有一个像这样注入的代码
element.src = chrome.runtime.getURL('inject.js');
document.head.appendChild(element);
Injects.js 本身:
(function() {
//my code here
}());
代码本身并没有什么特别的,我使用类似于monkeyPatch的代码来修补一些原始页面函数并从中接收事件数据,而我的代码本身只有一个匿名函数setTimeout{}
,剩下的只是数据/ DOM操作。
现在,奇怪的是,如果我更改了将代码包装到IIFE example:
中的函数,(function () {
//my code
})();
我开始在5-7分钟内出现疯狂的内存泄漏,例如几Gb。
我不太熟悉JS及其生态系统-可能导致这种情况的原因?我想了解它,并在以后避免出现类似问题。让我知道是否需要更多背景信息。
编辑:
1。有人链接:
Location of parenthesis for auto-executing anonymous JavaScript functions?
有趣的提法是:Does the former take up memory by leaving around a global, anonymous function?
2。这也很有趣: https://stackoverflow.com/a/3783287/8313379
这些都不回答我的问题,这是有效的-10分钟内仍有2Gb内存泄漏。