Javascript 网络工作者内存泄漏?

Javascript 网络工作者内存泄漏?,javascript,google-chrome,memory-leaks,google-chrome-devtools,web-worker,Javascript,Google Chrome,Memory Leaks,Google Chrome Devtools,Web Worker,我一直在使用view试图追踪页面中的一些内存泄漏。我发现了一个特定的内存泄漏,它是由于实例化web workers而导致的,我似乎不知道如何消除它 我已经剥离了页面,只需加载web worker,而不做其他事情。每次我刷新页面时,Chrome时间轴视图上的文档数都会永久增加1。如果我注释掉对Worker构造函数的调用,并开始刷新页面,文档计数会先增加后减少,实际上保持不变。手动终止/关闭工作进程并不能解决问题(尽管在查看开发人员工具的“源”选项卡时,我可以看到工作进程消失) 这是我的trimme

我一直在使用view试图追踪页面中的一些内存泄漏。我发现了一个特定的内存泄漏,它是由于实例化web workers而导致的,我似乎不知道如何消除它

我已经剥离了页面,只需加载web worker,而不做其他事情。每次我刷新页面时,Chrome时间轴视图上的文档数都会永久增加1。如果我注释掉对Worker构造函数的调用,并开始刷新页面,文档计数会先增加后减少,实际上保持不变。手动终止/关闭工作进程并不能解决问题(尽管在查看开发人员工具的“源”选项卡时,我可以看到工作进程消失)

这是我的trimmed-down.htm文件。我能够用这一小块html/javascript重现这个问题:

<html>
<script type="text/javascript">
var worker_blob = new Blob(["var test = 1;"]);
var worker_url = window.URL.createObjectURL(worker_blob);
// Comment out the line below and the memory leak goes away
var worker = new Worker(worker_url);
window.URL.revokeObjectURL(worker_url);
</script>
</html>

var-worker_-blob=新blob([“var-test=1;”]);
var worker\u url=window.url.createObjectURL(worker\u blob);
//注释掉下面的行,内存泄漏就会消失
var worker=新的worker(worker\u url);
window.URL.revokeObjectURL(worker\uURL);

这是Chrome v25中的内存泄漏。它似乎在Chrome v26中已修复,因为该问题无法再重现。

当您的工作人员完成任务时,它可以自己完成任务,或者您的页面可以调用
terminate
。我已经尝试了这两种方法,但没有一种方法可以解决该问题。此外,当我离开页面时,工作人员应该被终止。这是偶然的吗?我不能说我完全理解错误报告,但它似乎与我遇到的问题有关。希望这个简单的测试用例能帮助您重现/修复这个问题。