El uso de memoria en Firefox

Firefox

Un artículo interesante sobre las pérdidas de memoria en Firefox. Se puede leer como identificarlos y lo que se puede hacer. Incluye un listado de los elementos conocidos de pérdida de memoria.

El texto fue traducido al español del original en inglés. La traducción estubo a cargo de www.enespanol.com.ar El artículo original es: The one and only ?Memory Usage? thread.

Para leer el texto completo, click acá

Acerca de este texto

Introducción

El uso de memoria en Firefox ha sido un tema caliente desde la salida de Firefox 1.5. Este texto está diseñado para proveerte de consejos en cómo minimizar la cantidad de memoria utilizada por Firefox, información sobre lo que se sabe que causa pérdidas de memoria en Firefox, qué es y qué no es una pérdida de memoria, el progreso de la reparación de una pérdida de memoria y las formas en las que se puede ayudar.

Agradecimientos

Esta información y las soluciones en el texto han sido fuente de varios usuarios [del foro MozillaZine] y discusiones y la base de conocimientos de MozillaZine.

Agradecimientos especiales a:
Jesse Ruderman
Steve England
Viejo y estimado schapel

Temas, Extensiones, Plugins

Themas y Extensiones

Los temas y extensiones pueden causar que la pérdida de memoria aumente significativamente. Prueba utilizar Firefox en Modo Seguro para verificar si es algún tema o extensión lo que te está causando problemas. También verifica las extensiones con pérdidas de memoria conocidas detalladas a continuación.

Adblock

Utilizar versiones antiguas de AdBlock con Firefox 1.5 es una mala idea en general y se reportó que causa aumentos en el uso de la memoria. Los usuarios de Firefox 1.5 deberían de utilizar AdBlock Plus o actualizar a AdBlock 0.5.3.042. Si aún no has instalado Firefox 1.5, desinstala AdBloc y reinicia Firefox dos veces antes de instalar Firefox 1.5.

Fasterfox

La extensión FasteFox tiene una funcionalidad que habilita la pre-carga de todos los vínculos estáticos en la página que se está visitando (?Enhanced Prefetching?). Está apagada por defecto. Mientras que encendiéndola puede disminuir el tiempo que tarda una página en cargarse (porque las toma antes de que intentes verla), también aumentará el uso de memoria.

Firefox Preloader

Utilizar Firefox Preloader aumentará el uso de memoria. Deshabilítalo si no lo necesitas ahorrará memoria. (Si, sé que este comportamiento es inherente al diseño? )

Plugins

Algunos plugins, particularmente el Adobe Reader y Java, pueden utilizar grandes cantidades de memoria. Como los plugins no son liberados luego de haber sido utilizados, el reiniciar Firefox puede ayudar.

Java

Los usuarios de Java deberían actualizar a Java Runtime Environment 1.5.0_06. El deshabilitar la Consola de Java utilizando el Panel de Control de Java también puede reducir el uso de memoria.

Adobe Reader

Adobe Reader 6.0 y, en menor medida, 7.0 pueden utilizar grandes cantidades de memoria. Actualizar a Adobe Reader 7.0.5 puede ayudar a reducir el uso de memoria. Deshabilitando los plugins de Adobe Reader no utilizados también puede ayudar.

Firefox Tweaks

Firefox Memory Cache

Por defecto, Firefox no utiliza una memoria cache de tamaño fijo – utiliza un porcentaje de la memoria del sistema. El determinar una cantidad fija de memoria cache frecuentemente disminuye el uso de memoria (4 u 8 Mb es suficiente en la mayoría de los casos). Para determinar una cantidad fija de memoria agrega la siguiente preferencia utilizando about:config.

browser.cache.memory.capacity

Esta es una preferencia del tipo entero (int) y puede ser fijada al tamaño deseado de la cache (en kilobytes).

Ha habido un poco de debate en cuanto a la forma en la que Firefox determina el tamaño de la memoria cache. Verifica el bug 105344, el bug 204164 y el bug 296538 para discusiones al respecto.

Para deshabilitar completamente la memoria cache, fija browser.cache.memory.enable a falso (false). Nótese que esto no es recomendable a menos que uno se encuentre extremadamente escaso de memoria ya que puede ralentar las cosas severamente, así como también causar otros comportamientos extraños.

Memory Usage Upon Minimize

Existe una preferencia que activa el recorte de memoria utilizada por Firefox al minimizar todas las ventanas de la aplicación. Esta preferencia es sólamente para la versión para plataformas Windows. Para activarla, fija config.trim_on_minimize a verdadero (true) utilizando about:config.

Fast Back/Forward

Firefox 1.5 tiene una nueva funcionalidad de atrás/adelante rápido (bfcache) que reduce increíblemente la cantidad de tiempo que toma mostrar páginas al utilizar los botones atrás/adelante. Esto agrega al uso de memoria.

Para deshabilitarlo, fija browser.sessionhistory.max_total_viewers a 0 utilizando about:config. También se puede controlar el número de páginas almacenadas en lugar de deshabilitarlo completamente, esto está documentado en la Base de Conocimientos Mozilla. Nótese que la cantidad de memoria variará de acuerdo al tamaño y contenido de las páginas.

Historial del Navegador

Setear el historial del navegador a valores extremadamente altos aumentará el uso de memoria. Mantener el historial a un nivel razonable es una buena idea por esta razón.

Gerente de Descargas

Limpiar la lista de archivos descargados frecuentemente reducirá también el uso de memoria.

Otros inconvenientes

JavaScript

Páginas con mucho (o malo) JavaScript pueden incrementar el uso de memoria. El utilizar NoScript para controlar cuando un sitio utilice JavaScript puede ayudar en esta situación.

Corrupción de perfiles

La corrupción de un perfil puede causar muchos comportamientos extraños, incluyendo el aumento del uso de memoria. Si se sospecha que el perfil puede estar corrupto o ninguna de las sugerencias funciona, se puede intentar creando un nuevo perfil.

Bugs y Arreglos

Arreglos en Firefox 1.5.0.1

Las siguientes pérdidas de memoria fueron arregladas en Firefox 1.5.0.1:
Bug 316775 – Pérdida al seleccionar
Bug 317478 – Pérdidas debido a que el contaminador de entorno global no estaba siendo removido de suficientes (?) cadenas de prototipos

Arreglos en Rama Gecko 1.8 (Branch)

Las siguientes pérdidas de memoria fueron arregladas en la rama Gecko 1.8:
Bug 316775 – Pérdida al seleccionar
Bug 317478 – Pérdidas debido a que el contaminador de entorno global no estaba siendo removido de suficientes (?) cadenas de prototipos
Los arreglos en la rama Gecko 1.8 serán incluídos en futuras salidas de Firefox de esa rama, como Firefox 2.0. Estos arreglos también pueden llegar a ser agregados en futuras versiones de Firefox 1.5.x.

Arreglos en Trunk

Los siguientes bugs de memoria fueran arreglados en Trunk.
Bug 316775 – Pérdida al seleccionar
Bug 317478 – Pérdidas debido a que el contaminador de entorno global no estaba siendo removido de suficientes (?) cadenas de prototipos
Bug 241518 – llamando a addEventListener con una clausura que contenga el nodo de contenido produce pérdidas en el documento
Bug 315951 – diálogo de tipo de contenido desconcodio produce pérdidas en domwindow
Bug 320211 – pérdida relacionada al parser al cargar el inspector DOM en Firefox
Bug 321283 – utilizar Buscar causa pérdidas en los documentos
Bug 323532 – [ARREGLO] Pérdida al utilizar el auto-completar del historial
Bug 323377 – Muchas pérdidas en nsInternetSearchService
Bug 323534 – createTreeWalker puede causar pérdidas debido a ciclos creados por clausuras
Bug 323441 – pérdida de memoria debido cuando un sitio determina la ubicación y luego utiliza document.writes (por ejemplo, al visitar www.economist.com)
Bug 325305 – pérdida menor de memoria en CERT_FindCertByNameString
Bug 315708 – Se debería liberar el vínculo encontrado y el formulario de objeto nsTypeAheadFind.cpp de la ventana actual

Trunk es donde está lo último de lo último en cuanto al desarrollo de Mozilla. Los cambios en Trunk serán inluídos en Firefox 3.0, y algunos pueden llegar a incluírse en futuras versiones de Firefox 1.5.x y/o 2.0.

Known Leaky Extensions

Se reconoce que las siguientes extensiones tienen pérdidas de memoria:

Arregladas

AdBlock 0.5.3.042
AdBlock Plus 0.6.1.1 [Bug 326254]
NoScript 1.1.3.9 [Bug 324817]
Search Keys 0.7.3 [Changelog]
Thumbs 0.6.2 [Changelog]

No Arregladas

IE Tab 1.0.7 [Bug 324793]
Session Saver 0.2.1.031 [Bug 324864]
ForecastFox 0.8.5 [Bug 326258]

Dos por el precio de una

La combinación de Flashgot & Adblock Filterset.G Updater se ha reconocido que produce pérdidas de memoria [Bug 324586]

¿Cómo puedo ayudar?

Ayudando a otros

Si conoces a alguien que esté teniendo problemas relacionados con la utilización de meoria de Firefox, muéstrales este texto. Nueva información será actualizada aquí regularmente, por lo que es el mejor lugar para buscar respuestas.

Herramienta de detección de pérdidas de memoria

David Baron escribió recientemente una herramienta que los usuarios puede untilizar para ayudar a reducir la cantidad de pérdidas de memoria en Firefox. Si se está utilizando una versión de desarrollo de Firefox (no Firefox 1.5), entonces revisa el artículo en su blog ?Please file good memory leak bugs? (Por favor avisen de buenos bugs de pérdida de memoria) para más información acerca de ésta herramienta.

Cosas que no son pérdidas

El uso de memoria de Firefox no siempre disminuye

Esto generalmente no es un problema y no representa una pérdida de memoria, ¿por qué?
Cuando Firefox libera la memoria, la libera hacia su pila. Sin embargo, el sistema operativo reporta esta memoria como si estuviese en uso aún cuando Firefox ya no la utiliza para nada.

Un síntoma común es la cantidad de memoria utilizada que aumenta pero no disminuye – en lugar de mantenerse constante.

Las grandes imágenes no están comprimidas

Cuando Firefox muestra una imagen la descomprime. Cuando es combinada con la cache de memoria y Atrás/Adelante Rápido (bfcache), se puede causar que páginas con muchas o grandes imágenes utilicen mucha memoria. Esto no es una pérdida porque, cuando la memoria no sea más requerida será liberada a la pila.

2 thoughts on “El uso de memoria en Firefox

Deja un comentario