記憶體

在本文件中,您可以瞭解如何除錯與記憶體相關的問題。

我的程序記憶體耗盡

Node.js (JavaScript) 是一種具有垃圾回收機制的語言,因此可能由於保留器而發生記憶體洩漏。由於 Node.js 應用程式通常是多租戶、業務關鍵型且長期執行的,因此提供一種可訪問且高效的方法來查詢記憶體洩漏至關重要。

您還可以微調記憶體以獲得特定結果。檢視理解和調整記憶體瞭解更多詳情。

症狀

使用者觀察到記憶體使用量持續增加(可能快也可能慢,持續數天甚至數週),然後看到程序崩潰並由程序管理器重啟。程序的執行速度可能比以前慢,並且重啟會導致一些請求失敗(負載均衡器響應 502)

副作用

  • 由於記憶體耗盡,程序重啟,請求被丟棄
  • 垃圾回收(GC)活動增加導致 CPU 使用率升高和響應時間變慢
    • GC 阻塞事件迴圈導致執行緩慢
  • 增加的記憶體交換會減慢程序(GC 活動)
  • 可能沒有足夠的可用記憶體來獲取堆快照

我的程序記憶體利用效率低下

症狀

應用程式使用的記憶體量超出預期,並且/或者我們觀察到垃圾回收器活動增加。

副作用

  • 頁面錯誤數量增加
  • 更高的 GC 活動和 CPU 使用率

除錯

大多數記憶體問題可以透過確定我們特定型別的物件佔用多少空間以及哪些變數阻止它們被垃圾回收來解決。瞭解我們程式隨時間變化的分配模式也會有所幫助。