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中得到修復,因爲這個問題已經無法再現。