检测代码中的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和泄漏它们。