2010-05-20 22 views
5

Parece que hay mucha información sobre fugas de memoria en IE y cómo los desarrolladores web pueden evitarlas, pero no puedo encontrar mucho para evitar fugas en FF. He encontrado muchos consejos aleatorios sobre cómo los usuarios finales pueden ajustar sus preferencias o consejos para los desarrolladores de extensión, pero poco sobre lo que puedo hacer como desarrollador web para asegurarme de que no se filtren mis páginas. ¿Me estoy perdiendo de algo? Parece perezoso culpar al usuario y decir "tienes demasiadas extensiones". ¿O son los patrones principales los mismos que en IE - referencias circulares y todo eso?¿Cómo puedo evitar causar pérdidas de memoria en Firefox?

Además, si alguien sabe de alguna herramienta para solucionar las fugas en FF, sería genial. Encontré esto: https://addons.mozilla.org/en-US/firefox/addon/2490/ Pero aparentemente es solo para el desarrollo de cromo y extensión.

Respuesta

3

Fuera de los patrones de diseño para favorecer la única manera verdaderamente segura es probar sus páginas minuciosamente. Para controlar el uso de la memoria del navegador, el Administrador de tareas está bien, pero Process Explorer proporciona resultados más precisos.

JavaScript es una de las causas de las pérdidas de memoria, pero tenga cuidado con las películas flash en las páginas también. Nuestro equipo de contenido agregó una película de nuestro departamento de diseño que utilizó un efecto de transición de terceros y esto tragó 10Mb cada 20 segundos más o menos. El simple hecho de observar el ciclo de la película fue obvio en TaskManager para ver cómo la memoria saltaba cuando ocurría el efecto y nunca lo liberaba del todo.

+0

Gracias por Process Explorer. No sabia sobre eso. ¡Se ve muy bien! – mrdanimal

0

No sé si hay información específica para Firefox, pero las sugerencias genéricas aún se aplican.

Le sugiero que examine de cerca todos los bucles y funciones recursivas. Vuelva a utilizar los objetos existentes antes que crear los nuevos y asegúrese de que los objetos temporales y las primitivas salgan del alcance para que puedan liberarse.

2

Puede forzar la ejecución de un Recolector de basura en FireFox. Garbadge Collector destruirá los objetos de liberación & que ya no se utilizan. La única posibilidad de "pérdida de memoria" con un recolector de basura no es una "fuga" sino una referencia que no tiene sentido: eliminar todas las referencias a los objetos que no desea utilizar.

Lea más sobre esta página:
http://adblockplus.org/blog/different-ways-to-force-garbage-collection

2

Un montón de lo que se lee acerca de cómo evitar pérdidas de memoria en los navegadores tratan sobre cómo evitar cosas que hacen que el navegador no recupere la memoria que debería reclamar.

Sin embargo, un problema más importante en muchos casos se trata de páginas web que se aferran a objetos que ya no necesitan. Es solo el trabajo del navegador reclamar cosas que ya no son "alcanzables", es decir, cosas a las que la secuencia de comandos/página ya no puede acceder. Si está acumulando objetos en una matriz y no los elimina cuando termina con ellos, el uso de memoria aumentará a medida que la matriz aumente y el navegador no puede hacer nada al respecto.

Para expresarlo de otra manera: es un problema de pérdida de memoria en la página web en lugar de en el navegador. Y la herramienta que desea para eso es una herramienta de generación de perfiles de memoria para examinar los objetos a los que se puede acceder en su página, para que pueda saber si hay elementos allí a los que ya no debe aferrarse. Escribir esa herramienta para Firefox ha estado en mi lista de cosas que hacer durante un tiempo, pero todavía no he llegado a eso. Creo que puede haber algún trabajo en curso para escribir uno que se integre en Firebug.

Cuestiones relacionadas