2013-03-04 9 views
5

Come posso libera la memoria allocata da <tela> nel seguente esempio:assegnato libero da <canvas/> memoria a pagina reload

<html> 
    <head> 
    </head> 
    <body id="body"> 
    <canvas id="canvas" width=3000 height=2000/> 
    <script> 
     var canvas = document.getElementById("canvas"); 
     var ctx = canvas.getContext("2d"); 
     ctx.fillText("hao ar iu?", 20, 20); 
    </script> 
    </body> 
</html> 

ho cercato di impostare var tela su null (tela = null), a eliminare tela (cancella tela) o per creare dinamicamente tela e aggiungerlo alla radice "documento", dopo rimuoverlo così:

<div onclick=reload()>CLICK TO RELOAD PAGE</div> 
<script> 
    function reload(){ 
    body.removeChild(canvas); 
    location.reload(); 
    } 
</script> 

Nulla cambia, la memoria allocata g è sempre più grande con ogni singola pagina di ricarica fino a quando il mio browser occupa troppa memoria della CPU. A volte il browser si blocca. A volte il garbage collector elimina alcune variabili dall'ambito. Ma lascia troppa memoria occupata. Uso la versione di Chrome 25. Esistono mezzi per liberare la memoria > di canvas o per provocare la garbage collection anticipata?

risposta

-1

Hai provato a eliminare l'operatore JavaScript?

delete canvas; 

Altrimenti si può provare questo che funziona per me:

canvas.parentNode.removeChild(canvas); 

È necessario assicurarsi di rimuovere ogni riferimento alla tua tela anche quelli dal DOM o qualsiasi altro oggetto per evitare la memoria perdite.

PS: ho dimenticato di dire che la dimensione della tua tela è molto grande. Mantenere le dimensioni della tela il più possibile ridotte per ridurre l'uso della memoria e aumentare i fps.

PS2: chiudere i tuoi sentieri aiuterà memoria evitando perdite

+0

Sì ho provato tutte le soluzioni elencate da voi, come si può leggere nel mio post. Nessuno di loro sembra funzionare in modo affidabile per me. Cosa intendi per "chiudere i tuoi percorsi"? Non disegno animazione in modo che le grandi dimensioni non infliggano prestazioni nel mio caso. – 0xC0DEGURU

+0

Questo non è il tipo di eliminazione da utilizzare. – Isius