Hace poco se dio a conocer la noticia de que Facebook ha tomado la decisión de liberar el código fuente du kit de herramientas memlabel cual está diseñado para analizar porciones del estado de la memoria asignada dinámicamente (tas), determinar una estrategia para optimizar el trabajo con memoria y detectar fugas de memoria que ocurren cuando exécuter le code JavaScript.
Le marco fue creado para analizar las causas del alto consumo de memoria cuando se trabaja con sitios web y aplicaciones web. Par exemple, se usó memlab para analizar el consumo de memoria cuando se usaba une nouvelle version du site Facebook.com, que revele fugas que provocaron un bloqueo del navegador en el lado del cliente debido al agotamiento de la memoria libre.
Las personas que usan nuestras aplicaciones web a menudo notarán problemas de rendimiento y corrección funcional de inmediato. Una pérdida de memoria, sin embargo, es una historia diferente. No es perceptible de inmediato, porque consomme una parte de la memoria a la vez, lo que afecta a toda la sesión web y hace que las interacciones posteriores sean más lentas y menos receptivas.
Pour aider un nuestros desarrolladores à bord esto, creamos MemLab , un marco de prueba de memoria de JavaScript qui automatiza la detección de fugas and facilita la localización de las fugas de memoria. Hemos utilizado MemLab en Meta para contenter con éxito los aumentos de memoria insostenibles e identificar fugas de memoria y oportunidades d’optimización de memoria en nuestros productos e infraestructura.
El alto uso de memoria tiene un impacto estadísticamente significativo y negativo en la carga de páginas y rendimiento de la interacción (cuánto tiempo lleva cargar una página o realizar una interacción)
Métricas de participation del usuario (usuarios activos, tiempo de permanencia en el sitio, número de actividades realizadas)
Las causas de las fugas de memoria al ejecutar code JavaScript pueden ser la presencia de referencias ocultas a objetospar là que el recolector de basura no puede liberar la memoria ocupada por el objeto, el almacenamiento en caché irrazonable de valores o la implementación de desplazamiento infinito sin desalojar elementos de lista antiguos.
Par exemple, en el siguiente código de Chrome, la pérdida de memoria se produit debido al objeto « obj », aunque esté configurado como nulo, porque Chrome mantiene referencias internas a los objectos representados para permitir que se inspeccionen más tarde in la consola web.
Le fonctionnement de base de Memlab, est le suivant :
- Primero hace la detección de pérdidas de memoria en el navegador, Memlab permite comparar automáticamente instantáneas de memoria dinámica, detectar fugas de memoria y agregar resultados.
- Una API transversal de montón orientada a objectos that permite implementar sus propios algoritmos de detección de fugas e implementar sistemas para analizar instantáneas de montón. L’analyse de montón est compatible avec les navigateurs basados et le moteur Chromium, ainsi que pour les plates-formes Node.js, Electron et Hermes.
- Interfaz de línea de comandos y API para encontrar oportunidades para optimizar el uso de la memoria.
- Un système d’afirmación pour Node.js qui permet de créer des pruebas unitarias et ejecutar programas basados en Node.js para dividir su propio estado, probar su memoria o escribir afirmaciones avanzadas.
- Agrupación de rastros de retención, MemLab agrupa todos los rastros de retención y muestra un rastro para cada grupo d’objets filtrés que comparten rastros de retención similares. El seguimiento incluye incluye información de depuración, como nodos dominadores y tamaños retenidos.
- Reportando las fugas, MemLab se puede ejecutar en intervalos regulares a lo largo del día para obtener una señal continua sobre las regresiones de memoria. Cualquier nueva regresión se agrega a un tablero interno, donde se recopilan y clasifican los rastros de retención agrupados de todas las fugas de memoria detectadas. Luego, los desarrolladores pueden hacer click y ver las propiedades de los objetos en el rastro de retención de cada pérdida de memoria.
Enfin si c’est intéressédebes saber que Memlab código es de código abierto bajo la licencia MIT y puedes conocer más al respecto en el siguiente enlace.