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

我有一些正在工作的代码 ,但它有一个内存泄漏。

跟踪node.js中的内存泄漏有什么好策略?

在寻找这种泄漏时,我应该遵循什么步骤?

我如何跟踪代码中的泄漏?

谢谢

您可以通过分析应用程序的内存使用情况来了解这一点。

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

例如,对于您的代码,您知道每当用户连接时都会创build一个套接字。 当三个用户连接时倾倒堆应显示〜3个sockets。 这些用户断开连接后堆转储应显示〜0套接字。


您可以使用Chrome堆转储分析器和Node.js堆转储。

  • Chrome堆转储分析器上的文档: https : //developers.google.com/chrome-developer-tools/docs/heap-profiling

  • 项目,使您可以采取Node.js堆转储和检查他们在Chrome浏览器: https : //github.com/bnoordhuis/node-heapdump


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

你需要确定你的函数的名字(即使他们不需要名字),所以他们在堆转储中显示为有用的东西。

例如,类似的东西

function() { }

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

function taggedFunction() { }

将在堆转储中显示为function taggedFunction() 。 如果你创build了100个taggedfunction,那么你会在100次堆转储中看到taggeFunction。 基本上,命名你的function让你弄清楚,如果你不断创build和泄漏它们。