我有一个开始HTML5 SharedWorker
脚本的网页。每次重新加载这个页面时,Chrome内存的使用量都会增加(点击F5)。
工作脚本非常简单。每秒钟(使用setInterval
)就会向连接的端口发送一条消息。
似乎每次我点击F5时,工作进程都被终止并重新启动。这是我所期望的,因为这个工作人员实际上不会被多个“文档”共享。但是,我不明白为什么每次刷新时内存使用量都会增加。
有人知道为什么会这样吗?
考虑到每次页面重新加载时内存都会增加,这让我认为我根本不能在Chrome中使用共享工作人员。有没有人能够做到这一点而没有记忆问题?
更新
这是宿主HTML:
<div id="output"></div>
<script type="text/javascript" src="/scripts/jquery-1.4.4.js"></script>
<script type="text/javascript">
$(function () {
var worker = new SharedWorker("/scripts/worker.js")
worker.port.onmessage = function(e) {
$("#output").append($("<div></div>").text(e.data));
};
worker.port.start();
});
</script>
...and,我是worker.js
var list = [];
setInterval(function () {
for (var i = 0; i < list.length; ++i) {
list[i].postMessage("#connections = " + list.length);
}
}, 1000);
onconnect = function (event) {
list.push(event.ports[0]);
};
宿主页面启动/连接到共享工作人员,并输出从它接收到的任何内容。
工作代码保存连接端口的列表,并每秒钟向它们发送一条消息。
这是简单的东西。然而,每次主机页面都被重新加载到Chrome中。该选项卡的内存有效负载增加。
以下是经过几次刷新后Chrome的内存使用情况:
...after刷新更多我达到250 MB.
我的想法不多了,我认为这一定是Chrome中的一个bug。有人能给我一些指针吗?
更新2
禁用我的AdBlock扩展似乎解决了这个问题:
因此,我很高兴有一段时间,但是事实证明,内存仍然在被泄露,。当AdBlock被禁用时,每次刷新页面的泄漏量就会少得多。
发布于 2012-08-13 15:56:19
看来铬组已经解决了这个问题。我不能再复制了。
https://stackoverflow.com/questions/7114378
复制相似问题