Facebook 發布 memlab 源代碼

facebook-memlab

MemLab 是一個用於查找 JavaScript 內存洩漏的框架

最近有消息說 Facebook 已決定發布源代碼 工具包的 記憶實驗室,這是 旨在分析部分內存狀態 動態分配(堆),確定優化內存工作的策略並檢測發生的內存洩漏 執行 JavaScript 代碼。 

框架 創建是為了分析高內存消耗的原因 在使用網站和 Web 應用程序時。 例如,在使用新版本的 Facebook.com 網站時,memlab 被用於分析內存消耗,結果發現由於可用內存耗盡導致客戶端瀏覽器崩潰的洩漏。

使用我們的 Web 應用程序的人通常會立即註意到性能問題和功能修復。 然而,失憶是另一回事。 它不會立即引起注意,因為它一次消耗一大塊內存,影響整個 Web 會話並使後續交互變得更慢且響應更慢。

為了幫助我們的開發人員解決這個問題,我們創建了 MemLab,這是一個 JavaScript 內存測試框架,它可以自動進行洩漏檢測並可以輕鬆定位內存洩漏。 我們在 Meta 上使用 MemLab 成功地遏制了不可持續的內存增長,並在我們的產品和基礎架構中發現了內存洩漏和內存優化機會。

高內存使用對頁面加載和交互性能(加載頁面或執行交互需要多長時間)具有統計上顯著的負面影響
用戶參與度指標(活躍用戶、在網站上花費的時間、執行的活動數量)

內存洩漏的原因 執行 JavaScript 代碼時 可能是隱藏對象引用的存在,所以 垃圾收集器無法釋放內存 被對象佔用,不合理的值緩存,或者實現無限滾動而不驅逐舊列表項。

例如,在以下 Chrome 代碼中,由於“obj”對象而發生內存洩漏,即使它設置為 null,因為 Chrome 保留對渲染對象的內部引用,以便稍後在 Web 控制台中檢查它們。

Memlab的基本操作, 它是以下內容:

  1. 它首先在瀏覽器中進行內存洩漏檢測,Memlab 允許您自動比較動態內存快照、檢測內存洩漏和匯總結果。
  2. 一個面向對象的堆遍歷 API,允許您實現自己的洩漏檢測算法並實現用於解析堆快照的系統。 基於 Chromium 引擎的瀏覽器以及 Node.js、Electron 和 Hermes 平台支持堆解析。
  3. 命令行界面和 API 來尋找優化內存使用的機會。
  4. Node.js 的斷言系統,允許您創建單元測試並運行基於 Node.js 的程序來拆分您自己的狀態、測試您的內存或編寫高級斷言。
  5. 保留跟踪分組,MemLab 將所有保留跟踪分組在一起,並為共享相似保留跟踪的每組過濾對象顯示跟踪。 跟踪還包括調試信息,例如支配節點和保留的大小。
  6. 通過報告洩漏,MemLab 可以在一天中定期運行,以獲得有關內存回歸的連續信號。 任何新的回歸都會添加到內部儀表板,其中收集和分類所有檢測到的內存洩漏的匯總保留跟踪。 然後,開發人員可以單擊並查看每個內存洩漏的保持跟踪中的對象屬性。

終於 如果你有興趣,你應該知道 Memlab 代碼是在 MIT 許可下開源的,你可以了解更多 在下面的鏈接中。


發表您的評論

您的電子郵件地址將不會被發表。 必填字段標有 *

*

*

  1. 負責數據:MiguelÁngelGatón
  2. 數據用途:控制垃圾郵件,註釋管理。
  3. 合法性:您的同意
  4. 數據通訊:除非有法律義務,否則不會將數據傳達給第三方。
  5. 數據存儲:Occentus Networks(EU)託管的數據庫
  6. 權利:您可以隨時限制,恢復和刪除您的信息。