Facebook 開源框架,用於偵測 JavaScript 中的記憶體洩漏

Facebook(在俄羅斯聯邦被禁止)開放了memlab工具包的源代碼,旨在分析動態分配記憶體(堆)的狀態切片,確定優化記憶體管理的策略,並識別執行程式碼時發生的記憶體洩漏JavaScript。 該代碼在 MIT 許可證下開放。

創建該框架是為了分析使用網站和 Web 應用程式時記憶體消耗高的原因。 例如,memlab 用於分析使用新版本 Facebook.com 網站時的記憶體消耗情況,從而可以識別由於可用記憶體耗盡而導致客戶端瀏覽器崩潰的洩漏。

執行 JavaScript 程式碼時記憶體洩漏的原因可能是隱藏的物件參考(阻止垃圾收集器釋放物件佔用的記憶體)、不明智的值快取或在不驅逐舊清單元素的情況下實現無限滾動。 例如,在 Chrome 中的以下程式碼中,由於物件「obj」而發生記憶體洩漏,儘管它被分配了 null 值,因為 Chrome 儲存了對輸出物件的內部引用,以便以後在 Web 控制台中檢查。 var obj = {}; 控制台.log(obj); 物件=空;

memlab的主要特點:

  • 檢測瀏覽器中的記憶體洩漏。 Memlab 可讓您自動比較動態記憶體狀態快照、偵測記憶體洩漏並聚合結果。
  • 用於堆迭代的物件導向 API,可讓您實作自己的洩漏偵測演算法並實作用於分析堆狀態快照的系統。 基於 Chromium 引擎的瀏覽器以及 Node.js、Electron 和 Hermes 平台都支援堆分析。
  • 用於尋找優化記憶體使用機會的命令列介面和 API。
  • Node.js 的斷言系統,可讓您建立單元測試並執行基於 Node.js 的程式來建立您自己的狀態切片、測試您的記憶體或編寫擴充斷言檢查。

來源: opennet.ru

添加評論