Tengo un javascript (usado con google maps api) que estoy probando en IE y Chrome y noté síntomas de pérdida de memoria en IE solamente: cuando actualizo la página continuamente, la cantidad de memoria utilizada en IE se mantiene creciendo (rápido), pero en Chrome se mantiene constante. Sin publicar todo el código (ya que es bastante largo), ¿puedo obtener algunas sugerencias sobre qué buscar? ¿Qué podría hacer que la memoria siga creciendo así en IE en las actualizaciones de página?javascript memory leak
Como dije, sé que es difícil sin código, pero me gustaría ver si algún consejo genérico funciona primero. Gracias.
Actualización: gracias por las respuestas hasta el momento. Como control de cordura, ejecuté el código de Google Maps api "Hello World" from google para ver qué pasaría en IE (el código se muestra a continuación). Cuando ejecuto este código en IE, cuando sigo refrescando la página una y otra vez, la memoria sigue creciendo y creciendo. ¿Es esto una pérdida de memoria? Esto no se parece como funcionalidad prevista ...
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function initialize() {
var latlng = new google.maps.LatLng(-34.397, 150.644);
var myOptions = {
zoom: 8,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width:100%; height:100%"></div>
</body>
</html>
Actualización 2: Entonces, ¿hay ninguna manera de conseguir este código de mapa de Google API Hello World para funcionar sin fugas de memoria en el IE? Me di cuenta de que si ejecuto el mismo experimento en maps.google.com no parece haber una fuga ... Sería genial si alguien pudiera ayudarme a modificar el código hello world para que no se escape en IE; de esta forma puedo construirlo (no me importa usar JQuery si esto ayudara, pero lo intenté con el código de Hello World y todavía estaba goteando en IE). Gracias de nuevo
IE 6 tenían un tema muy específico de fugas donde, si no nula a cabo todos los controladores de eventos (onclick, onmousever, proceso de carga) en Elementos HTML que fueron creati ng y destruyendo dinámicamente, esas referencias nunca obtendrían basura recolectada. Eso fue corregido en versiones posteriores. Entonces, si estás experimentando esto en IE6, es probable que sea tu problema (aunque el código de Google debería estar por encima de este problema). Recuerde que el navegador ejecutará su recolector de basura cuando le apetezca, y casi nunca cuando lo espera. ¿El uso de la memoria disminuye si esperas? – Andrew
De hecho, estoy usando IE 7, y la memoria no baja cuando se espera ... ¿cómo iba a "nulos fuera todos los controladores de eventos" cuando me basta con conectarlo a
? – hhjSi está utilizando IE 7, este problema no debería afectarlo. El problema antes era si tenía todos los elementos que tenían eventos ligados a ellos (si el mapa tiene la función de arrastrar y soltar, entonces no) - que tendría que recorrer todos los elementos que tenían controladores de eventos y decir ' document.getElementById ('mydiv'). onclick = null; 'etc. Pero tiene toda la razón. En el caso de tu código anterior, no hay nada malo que estés haciendo que yo pueda ver. Debe ser un problema con el código de Google, la peor respuesta que puedo dar. – Andrew