nodejs内存分析

Posted

技术标签:

【中文标题】nodejs内存分析【英文标题】:nodejs memory profiling 【发布时间】:2012-10-03 13:45:35 【问题描述】:

需要分析节点进程。在运行节点进程几天后,我在生产中出现了一些内存泄漏。

我已经尝试过 node-inspector + v8,但它不起作用,在新版本的 node-inspector 中没有配置文件选项卡。在旧版本中,当我开始分析错误并停止调试。

我也试过 nodetime.com,但它没有显示我需要的内容,而且它占用太多内存,不适合生产。

我也尝试过 dtrace (http://blog.nodejs.org/2012/04/25/profiling-node-js/),但它没有给我必要的信息。


那么我需要什么信息来分析内存: 获取实时实例、实例计数、内存大小、实例类型

你知道如何获取这些信息吗?

【问题讨论】:

Nodetime 使用 V8 的堆分析器来获取堆快照。拍摄快照时,它可能会使内存使用量翻倍。您应该在生产中小心使用它。不过,使用 metric() 方法将自定义指标发送到节点时间,然后观察历史趋势可能会有所帮助。下个版本将引入更多与内存相关的自动指标。 【参考方案1】:

您可以尝试使用look 模块。它基于nodetime,但在本地工作。

【讨论】:

谢谢!但 nodetime 对我没有用,它没有为我显示必要的信息。【参考方案2】:

我发现node-memwatch 很有用。

缺点是您必须将它嵌入到您的应用程序中并为其编写一些代码,但它对于检查不同位置的堆以查看在您执行某项操作后它发生了多少变化很有用。

【讨论】:

有一个大问题。它只显示堆,但我需要查看 rss 的相同信息... 我应该使用哪种方法来分析堆并查看不修改源代码?

以上是关于nodejs内存分析的主要内容,如果未能解决你的问题,请参考以下文章

nodejs内存分析

nodejs内存分析

NodeJS 内存增长(内存泄漏)

记录一次DialogFragment 内存泄漏

MAT内存泄露分析(一)

android 内存分析