2012-07-03 11 views
5

Mi javascript es bastante simple. Simplemente sigue llamando a ajax para descargar datos y mostrarlos en mi pantalla. Reutilizo esos elementos DOM actualizando los datos directamente (usando la función $ de jquery (DIV) .empty() y luego agregué otro contenido). Sin embargo, después de pasar la noche, mi computadora se cuelga y parece que sigas haciendo algo.Colgar el sistema después de ejecutar javascript durante la noche

Intento ver el consumo de memoria mediante algún complemento de Firefox. Cuando se ejecutan dos horas, la memoria puede crecer 200 MB, pero no estoy seguro de si solo es causada por mi js u otra razón.

Tengo alguna pregunta sobre este tema. 1. ¿hay alguna manera de monitorizarlo (como la cantidad de memoria que utiliza una página web específica, la cantidad de recursos de la CPU ocupada y cómo?) 2. ¿Hay alguna forma un poco general para diseñar la aplicación web js? para evitar ese problema?

gracias, cualquier comentario es apreciado!

+0

¿Qué navegador estás usando? (EDITAR: Oh, veo FF). ¿Has repetido el experimento con varios navegadores? –

+0

¿ya está usando el generador de perfiles de Firebug? con él puedes ver a dónde van tus llamadas. – megakorre

+0

¿Ha pensado en abordar el problema desde un ángulo diferente? En lugar de usar ajax, solo usa una etiqueta meta-refresh para volver a cargar la página. – NotMe

Respuesta

3

Algunas versiones de Firefox utilizan el recuento de referencias como una estrategia de recolección de basura. El recuento de referencias es propenso a provocar pérdidas de memoria en determinadas circunstancias.

Internet Explorer y Mozilla Firefox son los dos buscadores web más comúnmente asociados con fugas de memoria en JavaScript. El culpable en ambos navegadores es el modelo de objeto componente utilizado para administrar objetos DOM . Tanto el Windows COM nativo como el XPCOM de Mozilla usan recolección de basura que cuenta la referencia para la asignación de memoria y la recuperación de . El recuento de referencias no siempre es compatible con la recolección de elementos no utilizados utilizada para JavaScript. Este artículo se centra en las formas de evitar fugas de memoria en código JavaScript. Consulte Recursos para obtener más información sobre el manejo de la memoria de capa COM en Firefox y IE.

De http://www.ibm.com/developerworks/web/library/wa-memleak/

0

Puede utilizar la función de línea de tiempo de Chrome para rastrear el uso de la memoria a lo largo del tiempo. Es parte de las herramientas de desarrollo integradas. Estoy seguro de que Firebug u otro complemento de FF proporcionaría la misma funcionalidad.

2

Tengo un presentimiento el consumo de memoria se debe a que en jQuery, cada vez que una llamada AJAX se hace, un jqXHR se crea para gestionar la solicitud y posterior procesamiento (devoluciones de llamada, comprobaciones de estado, etc.). No veo nada en los documentos de jQuery donde estos se borren automáticamente. Entonces, tu javascript solo los está acumulando.

http://api.jquery.com/jQuery.ajax/

Cuestiones relacionadas