5

Sto usando la vista Chrome's Timeline per tentare di rintracciare alcune perdite di memoria nella mia pagina. Ho trovato una perdita di memoria particolare che deriva dall'istanziazione dei lavoratori del Web che non riesco a capire come sbarazzarsi di.Perdita di memoria del lavoratore Web?

Ho spogliato la pagina per caricare solo il web worker e non fare nient'altro. Ogni volta che aggiorno la pagina, il conteggio dei documenti sulla visualizzazione cronologia di Chrome aumenta in modo permanente di 1. Se commento la chiamata al costruttore Worker e comincio ad aggiornare la pagina, il conteggio dei documenti aumenta e quindi diminuisce, rimanendo sempre lo stesso. Chiusura manuale/chiusura del lavoratore non risolve il problema (anche se posso vedere il lavoratore scomparire quando guardo la scheda Fonti degli strumenti di sviluppo).

Ecco il file .htm ridotto. Sono in grado di riprodurre il problema con questo breve blocco di 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

Quando il tuo operatore termina il suo compito, può [chiudere] (https://developer.mozilla.org/en-US/docs/XPCOM_Interface_Reference/nsIorkerScope#close()) o la tua pagina potrebbe chiamare 'terminate'. –

+0

Ho già provato entrambi e nessuno dei due risolve il problema. Inoltre, il lavoratore deve essere terminato quando esco dalla pagina. –

+2

È questo per caso https://code.google.com/p/chromium/issues/detail?id=181680? –

risposta

3

Questa è una perdita di memoria in Chrome v25. Sembra risolto in Chrome v26, in quanto il problema non può più essere riprodotto.