5

我一直在使用Chrome's Timeline视图来试图追踪我的页面中的一些内存泄漏。我发现一个特殊的内存泄漏是由于实例化web worker而导致的,我似乎无法弄清楚如何摆脱。Web Worker内存泄漏?

我已经剥离了网页,只是加载网络工作者,别无其他。每次刷新页面时,Chrome浏览器时间轴视图上的文档计数将永久性增加1.如果我将对Worker构造函数的调用注释掉并开始刷新页面,则文档计数会增加然后减少,实际上保持不变。手动终止/关闭工作人员并不能解决问题(尽管我可以在查看开发人员工具的Sources选项卡时看到工作人员消失)。

这是我修剪下来的.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> 
+0

当您的工作完成其任务时,它可以[关闭](https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIWorkerScope#close())本身或您的页面可以调用“terminate”。 – 2013-03-26 20:28:59

+0

我已经尝试过两种方法,但都没有解决问题。另外,当我离开页面时应该终止该工作者。 – 2013-03-26 20:34:06

+2

这是偶然的https://code.google.com/p/chromium/issues/detail?id=181680? – 2013-03-27 17:06:26

回答

3

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