Facebook ha aperto il codice del framework per rilevare perdite di memoria in JavaScript

L'azienda Facebook (vietata in RF) ha rilasciato i codici sorgente dello strumento memlab, destinato all'analisi degli stati della memoria dinamicamente allocata (heap), alla definizione di strategie per l'ottimizzazione dell'uso della memoria e all'individuazione delle perdite di memoria che si verificano durante l'esecuzione di codice in linguaggio JavaScript. Il codice è rilasciato con licenza MIT.

Il framework è stato creato per analizzare le cause dell'elevato consumo di memoria durante l'uso di siti web e applicazioni web. Ad esempio, con memlab è stata condotta un'analisi del consumo di memoria con la nuova versione del sito Facebook.com, che ha permesso di identificare perdite che portavano a crash del browser sul lato client a causa dell'esaurimento della memoria disponibile.

Le cause delle perdite di memoria durante l'esecuzione del codice JavaScript possono essere riferite alla presenza di riferimenti nascosti a oggetti, per i quali il garbage collector non può liberare la memoria occupata dall'oggetto, a un caching irrazionale dei valori o all'implementazione di uno scroll infinito senza espellere i vecchi elementi della lista. Ad esempio, nel codice qui sotto, in Chrome, si verifica una perdita di memoria a causa dell'oggetto "obj", nonostante venga assegnato il valore null, poiché Chrome conserva riferimenti interni agli oggetti visualizzati per consentire il successivo ispezionamento nella console web. var obj = {}; console.log(obj); obj = null;

Le principali funzionalità di memlab:

  • Individuazione di perdite di memoria nel browser. Memlab consente di confrontare automaticamente i snapshot dello stato della memoria dinamica, di identificare perdite di memoria e di aggregare i risultati.
  • API orientata agli oggetti per l'iterazione sull'heap, che consente di implementare algoritmi personalizzati per l'individuazione di perdite e di realizzare sistemi di analisi degli snapshot dello stato dell'heap. È supportata l'analisi dell'heap per i browser basati sul motore Chromium, nonché per le piattaforme Node.js, Electron e Hermes.
  • Interfaccia a riga di comando e API per la ricerca di opportunità di ottimizzazione dell'uso della memoria.
  • Sistema di assert per Node.js, che consente di creare unit test ed eseguire programmi basati su Node.js per la creazione di snapshot del proprio stato, la verifica della propria memoria o la scrittura di assert avanzati.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster