检测代码中的node.js / javascript内存泄漏

时间:2013-03-30 21:11:44

标签: javascript node.js memory-leaks

我有some code正在运行,但它有内存泄漏。

在node.js中有哪些跟踪内存泄漏的好策略?

在寻找此类泄漏时,我应该遵循哪些步骤?

如何跟踪代码中的泄漏?

由于

1 个答案:

答案 0 :(得分:17)

您可以通过分析应用程序的内存使用情况来解决这个问题。

Javascript对象在堆上分配,因此您需要一个可以转储堆的工具。获取堆转储后,您可以检查它并查看给定对象(或函数)的实例数。

例如,对于您的代码,您知道只要用户连接就会创建套接字。在连接三个用户时转储堆应该显示~3个套接字。在这些用户断开连接后转储堆应显示~0个套接字。


您实际上可以将Chrome堆转储分析器与Node.js堆转储结合使用。


只是fyi,函数将显示在(closure)部分下的堆转储中。

您需要确保为函数命名(即使它们不需要名称),因此它们在堆转储中显示为有用的东西。

例如,像

function() { }

将在堆转储中显示为function()。在哪里:

function taggedFunction() { }

将在堆转储中显示为function taggedFunction()。如果您创建了100个taggedFunctions,那么您将在堆转储中看到taggeFunction 100次。基本上,命名您的函数可以让您弄清楚是否继续创建和泄漏它们。