使用堆積分析器
堆積分析器在 V8 之上運作,以捕獲隨時間的分配。在本文件中,我們將介紹使用
- 分配時間軸
- 採樣堆積分析器
與在使用堆積快照指南中介紹的堆積快照不同,即時分析的概念是為了了解一段時間內的分配情況。
堆積分析器 - 分配時間軸
堆積分析器類似於採樣堆積分析器,但它會追蹤每個分配。由於其開銷較高,因此不建議在生產環境中使用。
您可以使用 @mmarchini/observe 來以程式方式啟動和停止分析器。
操作方式
啟動應用程序
node --inspect index.js
--inspect-brk
對於腳本是更好的選擇。
連接到 Chrome 的開發者工具實例,然後
- 選擇
記憶體
標籤。 - 選擇
分配儀表板時間線
。 - 開始分析。
一旦堆積分析運行,強烈建議運行樣本以識別記憶體問題。例如,如果我們正在堆積分析 Web 應用程序,我們可以使用 Apache Benchmark
來產生負載
$ ab -n 1000 -c 5 http://localhost:3000
然後,在負載完成時按停止按鈕
最後,查看快照數據
查看有關記憶體術語的進一步信息,請參閱 有用鏈接 部分。
採樣堆積分析器
採樣堆積分析器跟蹤隨時間的記憶體分配模式和保留空間。由於它是基於採樣的,其開銷低到足以在生產系統中使用。
您可以使用模組
heap-profiler
來以程式方式啟動和停止堆積分析器。
操作方式
啟動應用程序
$ node --inspect index.js
--inspect-brk
對於腳本是更好的選擇。
連接到開發者工具實例,然後
- 選擇
記憶體
標籤。 - 選擇
分配取樣
。 - 開始分析。
產生一些負載並停止分析器。它將生成一個基於堆棧跟踪的分配摘要。您可以專注於具有更多堆分配的函數,參見下面的示例。