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.
Hay un buen artículo sobre JavaScript y pérdidas de memoria . No es específico sobre el navegador, sino que describe toda la problemática de las pérdidas de memoria y JavaScript.
Creo que es un mejor enfoque ser el navegador más inespecífico posible que se base en optimizar para algunos navegadores, cuando se desarrolla un sitio web para el público.
Puede consultar este artículo de MSDN para conocer los patrones de fuga de memoria de Internet Explorer. También hay algunas herramientas para detectar fugas de memoria:
Se trata de 2 tipos de objetos (y 2 recolectores de basura), javascript y objetos DOM, que pueden referenciarse entre sí (la referencia circular), y luego ninguno de los GC puede encargarse de todos sus objetos incluso cuando la página se descarga. Aquí hay una buena descripción:
http://getben.com/archive/2006/05/30/Resolving-JavaScript-Memory-Leaks.aspx
http://www.josh-davis.org/2007/04/11/javascript-built-in-listeners-and-memory-leaks/