使用堆積分析器

堆積分析器在 V8 之上運作,以捕獲隨時間的分配。在本文件中,我們將介紹使用

  1. 分配時間軸
  2. 採樣堆積分析器

與在使用堆積快照指南中介紹的堆積快照不同,即時分析的概念是為了了解一段時間內的分配情況。

堆積分析器 - 分配時間軸

堆積分析器類似於採樣堆積分析器,但它會追蹤每個分配。由於其開銷較高,因此不建議在生產環境中使用。

您可以使用 @mmarchini/observe 來以程式方式啟動和停止分析器。

操作方式

啟動應用程序

node --inspect index.js

--inspect-brk 對於腳本是更好的選擇。

連接到 Chrome 的開發者工具實例,然後

  • 選擇 記憶體 標籤。
  • 選擇 分配儀表板時間線
  • 開始分析。

heap profiler tutorial step 1

一旦堆積分析運行,強烈建議運行樣本以識別記憶體問題。例如,如果我們正在堆積分析 Web 應用程序,我們可以使用 Apache Benchmark 來產生負載

$ ab -n 1000 -c 5 http://localhost:3000

然後,在負載完成時按停止按鈕

heap profiler tutorial step 2

最後,查看快照數據

heap profiler tutorial step 3

查看有關記憶體術語的進一步信息,請參閱 有用鏈接 部分。

採樣堆積分析器

採樣堆積分析器跟蹤隨時間的記憶體分配模式和保留空間。由於它是基於採樣的,其開銷低到足以在生產系統中使用。

您可以使用模組 heap-profiler 來以程式方式啟動和停止堆積分析器。

操作方式

啟動應用程序

$ node --inspect index.js

--inspect-brk 對於腳本是更好的選擇。

連接到開發者工具實例,然後

  1. 選擇 記憶體 標籤。
  2. 選擇 分配取樣
  3. 開始分析。

heap profiler tutorial 4

產生一些負載並停止分析器。它將生成一個基於堆棧跟踪的分配摘要。您可以專注於具有更多堆分配的函數,參見下面的示例。

heap profiler tutorial 5