我一直在使用
Chrome’s Timeline视图来尝试追踪页面中的一些内存泄漏.我发现一个特定的内存泄漏是由实例化网络工作者导致我似乎无法弄清楚如何摆脱.
我已经删除了页面,只是加载Web工作者而不做任何其他事情.每次刷新页面时,Chrome的时间轴视图上的文档计数将永久增加1.如果我注释掉对Worker构造函数的调用,并开始刷新页面,则文档计数会增加然后减少,从而有效地保持不变.手动终止/关闭工作程序并不能解决问题(尽管我在查看开发人员工具的“源”选项卡时可以看到工作程序消失).
这是我修剪过的.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>
解决方法
这是Chrome v25中的内存泄漏.它似乎已在Chrome v26中修复,因为该问题无法再复制.