El libro de aprendizaje jQuery dice IE tiene pérdida de memoria para el objeto DOM que tenga una propiedad hace referencia a una función, y la función también hace referencia al objeto DOM, teniendo así una "referencia circular", así:En Internet Explorer, ¿por qué se mantiene la pérdida de memoria, incluso cuando se navega fuera de las páginas?
onload = function() {
var foo = document.getElementById('foo');
foo.onclick = function() { // DOM object foo's onclick property refers to a function
foo.innerHTML = "hello" // the function's body refers to the DOM object
} // therefore circular reference
}
IE puede manejar referencias circulares para la recolección de basura, pero no cuando las referencias circulares involucran tanto el objeto DOM como el objeto Javascript, ya que son manejados por diferentes administradores de memoria.
y:
[la pérdida de memoria ... y] la [referencia] bucle resultante no puede ser liberado por el IE incluso cuando navegamos lejos de la página.
nunca se libera hasta que se cierra el navegador.
¿Es cierto? ¿Por qué IE no libera esos recuerdos incluso cuando un usuario abandona la página? ¿Es porque el usuario puede hacer clic en Back
y volver a la página, y IE quiere mantener el estado de la página? En ese caso, ¿qué pasa si el usuario está en la página de pérdida de memoria y luego hace clic en Back
y luego va a google.com? Entonces la página no se puede ver con Back
o Forward
, y el problema de pérdida de memoria puede desaparecer sin cerrar el navegador?
¿O incluso cuando la pestaña está cerrada, sin cerrar el navegador?
¿Este tipo de pérdida de memoria también ocurre en IE 8?
Muchos programas tienen problemas con pérdidas de memoria; y si bien muchas pérdidas de memoria se han conectado a las versiones más recientes de IE, es difícil conectarlas a todas en un proyecto de este tamaño. – Piskvor