L'ho trovato su tutti i browser testati - IE, Firefox, Chrome e Safari su Window sand Safari su Apple.aggiornamento del browser non effettua la garbage collection
Presumibilmente, un aggiornamento del browser, pulsante indietro o collegamento in avanti dovrebbe scaricare i nodi del browser e le variabili e gli oggetti javascript, ecc. Questo sembra non essere il caso di WebGL. L'ho notato per la prima volta durante lo sviluppo di un'applicazione WebGL complessa che richiede da 100 MB a 200 MB di memoria. Durante lo sviluppo, devo fare un sacco di aggiornamenti e il mio computer inizierà a rallentare e congelarsi dopo 5-10 aggiornamenti.
Dopo alcune ricerche ho capito che questo non dovrebbe essere. La soluzione accettata al di fuori di una perdita di memoria è quella di aggiornare la pagina che deve rilasciare tutti gli oggetti e le variabili javascript e dom nodes. Ma date un'occhiata alle seguenti immagini:
Quindi qual è l'affare qui? Nelle piccole app non si nota, ma per le applicazioni WebGL di grandi dimensioni come la mia (orbitingeden.com) questo è un problema reale e i miei utenti penseranno che il software sia ancora più ricco di risorse di quanto non sia in realtà. L'immagine seguente mostra questi rinfresca divorando tutta la mia memoria disponibile, quindi la raccolta dei rifiuti non funziona e/o JS e DOM oggetti non vengono rilasciate:
http://orbitingeden.com/images/big_memory_after.png
Qualcuno sa di un trucco per forzare la browser per fare un vero dump di memoria? Perché tutta la documentazione è sbagliata?
https://bugs.webkit.org/show_bug.cgi?id=76225 – gman
@gman: se rispondi alla domanda, ti darò il merito. Sintesi: WebGL utilizza un contesto che viene preservato dal dominio e dalla scheda, irrilevante della pagina specifica (aggiornamento). Di conseguenza, qualsiasi memoria allocata al rendering WebGL non viene rilasciata per la garbage collection finché l'utente non si allontana dal dominio di base o chiude la scheda. Una possibile soluzione sarebbe quella di aggiungere un pulsante di uscita all'applicazione che esegue un reindirizzamento rapido a un nuovo dominio che reindirizza il terzino destro. –
Il bug verrà risolto in qualsiasi momento ora, quindi spero che non ci sarà bisogno di soluzioni alternative presto. C'è in realtà un test per questo nei test di conformità Webgl (https://cvs.khronos.org/svn/repos/registry/trunk/public/webgl/sdk/tests/conformance/context/context-creation-and-destruction. html) – gman