Meta, azienda un tempo nota come Facebook, ha rilasciato sotto licenza Open Source il suo framework chiamato MemLab, una soluzione dedicata agli sviluppatori JavaScript che potranno utilizzarla per rilevare fuoriuscite di memoria (memory leak) nelle applicazioni quando eseguite tramite browser basati sul codice di Chromium, il progetto da cui vengono realizzati Google Chrome, Microsoft Edge e altre soluzioni per la navigazione su Internet.
Come spiegato dagli sviluppatori del gruppo fondato da Mark Zuckerberg, non è insolito che gli utilizzatori riscontrino dei problemi di performance o dei malfunzionamenti a carico delle Web App. Nonostante ciò le fuoriuscite di memoria rimangono molto difficili da identificare.
Come funziona MemLab
MemLab è stato studiato in particolare per le situazioni in cui un utente potrebbe dover interagire per un periodo prolungato di tempo con una SPA (Single-Page Application) che manifesta un memory leak.
A questo scopo è stato scelto di utilizzare Puppeteer, una libreria basata su Node.js che permette di controllare Chromium in modalità headless per poter operare direttamente via CLI (Command Line Interface).
A livello pratico MemLab effettua la scansione di una pagina Web verificando che la memoria utilizzata dalle applicazioni venga effettivamente liberata, se il framework riceve un segnale contrario si ha un indizio abbastanza attendibile della presenza di un memory leak.
Ottimizzato per React
Chiaramente, trattandosi di un prodotto di Meta, MemLab è particolarmente indicato nel caso di progetti sviluppati con React che è una libreria JavaScript creata ed implementata internamente alla stessa azienda californiana.
Nello specifico di React, quest'ultimo effettua una rappresentazione residente in memoria del DOM (Document Object Model) tramite un oggetto chiamato Fiber che viene archiviato in una struttura ad albero, questa impostazione è efficace dal punto di vista funzionale ma nello stesso tempo in grado di generare memory leak di grandi dimensioni.
L'installazione di MemLab può essere effettuata tramite il package manager npm, in alternativa è possibile effettuarne il building a partire dal suo repository su git.