发布于 2013-03-30 21:23:49
您可以通过分析应用程序的内存使用情况来解决这个问题。
Javascript对象是在堆上分配的,因此您需要一个可以转储堆的工具。获取堆转储之后,您可以检查它,并查看给定对象(或函数)的实例数量。
例如,对于您的代码,您知道只要用户连接,就会创建一个套接字。当三个用户连接时,转储堆应该显示~3个套接字。在用户断开连接后转储堆应该显示~0套接字。
实际上,您可以在Node.js堆转储中使用Chrome堆转储分析器。
只有fyi,函数将显示在(closure)部分下的堆转储中。
您需要确保将函数命名(即使它们不需要名称),以便它们在堆转储中显示为有用的东西。
例如,类似于
function() { }
将在堆转储中显示为function()。其中as:
function taggedFunction() { }
将显示为堆转储中的function taggedFunction()。如果您创建了100个taggedFunctions,那么您将在堆转储中看到100次taggeFunction。基本上,命名您的函数可以让您知道您是否一直在创建和泄漏它们。
https://stackoverflow.com/questions/15723532
复制相似问题