Facebook ha rilasciato il codice sorgente di memlab

facebook-memlab

MemLab è un framework per la ricerca di perdite di memoria JavaScript

Recentemente la notizia lo ha reso noto Facebook ha deciso di rilasciare il codice sorgente della cassetta degli attrezzi memlabche è progettato per analizzare porzioni dello stato della memoria allocato dinamicamente (heap), determinare una strategia per ottimizzare il lavoro con la memoria e rilevare le perdite di memoria che si verificano quando eseguendo codice JavaScript. 

Il telaio è stato creato per analizzare le cause dell'elevato consumo di memoria quando si lavora con siti Web e applicazioni Web. Ad esempio, memlab è stato utilizzato per analizzare il consumo di memoria durante l'utilizzo di una nuova versione del sito Facebook.com, che ha rivelato perdite che hanno causato un arresto anomalo del browser lato client a causa dell'esaurimento della memoria libera.

Le persone che utilizzano le nostre applicazioni Web noteranno spesso problemi di prestazioni e correzioni funzionali. Una perdita di memoria, tuttavia, è una storia diversa. Non è immediatamente evidente, perché consuma un blocco di memoria alla volta, interessando l'intera sessione Web e rendendo le interazioni successive più lente e meno reattive.

Per aiutare i nostri sviluppatori a risolvere questo problema, abbiamo creato MemLab , un framework di test della memoria JavaScript che automatizza il rilevamento delle perdite e semplifica l'individuazione delle perdite di memoria. Abbiamo utilizzato MemLab su Meta per contenere con successo la crescita insostenibile della memoria e identificare le perdite di memoria e le opportunità di ottimizzazione della memoria nei nostri prodotti e nella nostra infrastruttura.

L'utilizzo elevato della memoria ha un impatto statisticamente significativo e negativo sul caricamento della pagina e sulle prestazioni di interazione (il tempo necessario per caricare una pagina o eseguire un'interazione)
Metriche di coinvolgimento degli utenti (utenti attivi, tempo trascorso sul sito, numero di attività svolte)

Le cause delle perdite di memoria durante l'esecuzione di codice JavaScript potrebbe essere la presenza di riferimenti a oggetti nascostiQuindi Garbage Collector non può liberare memoria occupata dall'oggetto, memorizzazione nella cache irragionevole di valori o implementazione dello scorrimento infinito senza eliminare i vecchi elementi dell'elenco.

Ad esempio, nel codice Chrome seguente, la perdita di memoria si verifica a causa dell'oggetto "obj", anche se è impostato su null, perché Chrome mantiene i riferimenti interni agli oggetti sottoposti a rendering per consentirne l'ispezione in un secondo momento nella console web.

Il funzionamento di base di Memlab, È il seguente:

  1. Effettua prima il rilevamento delle perdite di memoria nel browser, Memlab consente di confrontare automaticamente gli snapshot di memoria dinamica, rilevare le perdite di memoria e aggregare i risultati.
  2. Un'API di attraversamento dell'heap orientata agli oggetti che consente di implementare i propri algoritmi di rilevamento delle perdite e implementare sistemi per l'analisi degli snapshot dell'heap. L'analisi dell'heap è supportata per i browser basati sul motore Chromium, nonché per le piattaforme Node.js, Electron ed Hermes.
  3. Interfaccia della riga di comando e API per trovare opportunità per ottimizzare l'utilizzo della memoria.
  4. Un sistema di asserzioni per Node.js che ti consente di creare unit test ed eseguire programmi basati su Node.js per dividere il tuo stato, testare la tua memoria o scrivere asserzioni avanzate.
  5. Raggruppando le tracce di conservazione, MemLab raggruppa tutte le tracce di conservazione e visualizza una traccia per ogni gruppo di oggetti filtrati che condividono tracce di conservazione simili. La traccia include anche informazioni di debug come nodi dominanti e dimensioni mantenute.
  6. Segnalando le perdite, MemLab può essere eseguito a intervalli regolari durante il giorno per ottenere un segnale continuo sulle regressioni della memoria. Eventuali nuove regressioni vengono aggiunte a un dashboard interno, in cui vengono raccolte e classificate le tracce di conservazione in pool di tutte le perdite di memoria rilevate. Gli sviluppatori possono quindi fare clic e visualizzare le proprietà dell'oggetto nella traccia di blocco per ogni perdita di memoria.

Infine se sei interessato, dovresti sapere che il codice Memlab è open source con licenza MIT e puoi saperne di più nel seguente link


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.