在Chrome + FF中终止Web worker后内存泄漏

时间:2014-03-24 19:45:38

标签: google-chrome firefox memory-leaks web-worker

我有一个需要在后台工作程序中执行大量JavaScript工作的Web应用程序。我正在加载一个非常大的文件。此处的示例文件:https://www.dropbox.com/s/09b4d60d4c0i5dr/test.js

问题是将脚本加载到Web Worker然后终止该worker似乎会造成大量内存泄漏。 Chrome损失约30MB,FF损失约10MB。反复执行此操作最终会导致浏览器崩溃。

示例代码:

<html>
<script type="text/javascript">
var worker = new Worker("test.js");

// Wait until the worker is loaded, then terminate it: 
setTimeout(function() {
    worker.terminate();
}, 5000);
</script>
</html>

JavaScript文件本身不执行任何计算,它只定义了一个巨大的函数。如果您想查看其内容,我建议您使用VIM。

有什么想法吗?

更新

该错误与Emscripten无关。我设法用一个非常愚蠢的功能重现它,什么都不做。我更新了演示JS文件。

1 个答案:

答案 0 :(得分:0)

根据MDN,终止工作人员意味着&#34; [工作]线程被立即杀死而没有机会完成其操作或自行清理&#34; (https://developer.mozilla.org/en-US/docs/Web/Guide/Performance/Using_web_workers#Terminating_a_worker),所以我想&#34;杀死&#34;如果您希望自己的网络应用运行而不会泄漏太多内存,那么工作人员不是ATM的合理选择......