memoria management liberar funciona español ejemplos como caracteristicas javascript memory-leaks

management - ¿Sabes lo que puede causar pérdidas de memoria en JavaScript?



liberar memoria javascript (5)

Aquí hay una pérdida de memoria clásica en IE:

function body_onload() { var elem = document.getElementById(''someElementId''); // do stuff with elem elem.onclick = function() { //Some code that doesn''t need the elem variable } }

Después de que este código se haya ejecutado, hay una referencia circular porque un elemento tiene una función asignada a su evento onclick que hace referencia a un objeto de ámbito que a su vez contiene una referencia al elemento.

someElement-> onclick-> function-scope-> elem-> someElement

En IE DOM, los elementos son objetos de conteo de referencia basados ​​en COM que Javascript GC no puede limpiar.

La adición de una línea final en el código anterior lo limpiaría:

var elem = null;

¿Sabes lo que puede causar pérdidas de memoria en JavaScript? Estoy interesado en los navegadores: IE 7, FireFox 3, Safari 3


En general; las referencias circulares son la causa de muchos problemas. Recuerdo que IE 6 (no estoy seguro de si se aplica a 7) goteaba bastante con XMLHTTP ... estableciendo onreadystatechange = null una vez que había terminado con el problema.