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

Detect node.js/javascript memory leak in code

本文关键字:javascript 内存 泄漏 js node 代码 检测      更新时间:2023-09-26

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

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

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

如何跟踪代码中的泄漏?

谢谢

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

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

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


你实际上可以使用Chrome堆转储分析器与Node.js堆转储。

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

  • 项目,允许你采取Node.js堆转储和检查他们在chrome: https://github.com/bnoordhuis/node-heapdump


仅供参考,函数将显示在(closure)部分下的堆转储中。

你要确保你命名了你的函数(即使它们不需要一个名字),这样它们在堆转储中就会显示为有用的东西。

例如,像

function() { }

将在堆转储中显示为function()。位置:

function taggedFunction() { }

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