内存

在本文档中,您可以了解如何调试与内存相关的问题。

我的进程内存耗尽

Node.js (JavaScript) 是一种具有垃圾回收机制的语言,因此可能由于保留器而发生内存泄漏。由于 Node.js 应用程序通常是多租户、业务关键型且长期运行的,因此提供一种可访问且高效的方法来查找内存泄漏至关重要。

您还可以微调内存以获得特定结果。查看理解和调整内存了解更多详情。

症状

用户观察到内存使用量持续增加(可能快也可能慢,持续数天甚至数周),然后看到进程崩溃并由进程管理器重启。进程的运行速度可能比以前慢,并且重启会导致一些请求失败(负载均衡器响应 502)

副作用

  • 由于内存耗尽,进程重启,请求被丢弃
  • 垃圾回收(GC)活动增加导致 CPU 使用率升高和响应时间变慢
    • GC 阻塞事件循环导致运行缓慢
  • 增加的内存交换会减慢进程(GC 活动)
  • 可能没有足够的可用内存来获取堆快照

我的进程内存利用效率低下

症状

应用程序使用的内存量超出预期,并且/或者我们观察到垃圾回收器活动增加。

副作用

  • 页面错误数量增加
  • 更高的 GC 活动和 CPU 使用率

调试

大多数内存问题可以通过确定我们特定类型的对象占用多少空间以及哪些变量阻止它们被垃圾回收来解决。了解我们程序随时间变化的分配模式也会有所帮助。