在Chrome开发者工具中分析堆转储(内存泄漏)

时间:2017-02-01 11:37:07

标签: node.js reactjs google-chrome-devtools heap-dump node-heapdump

我在使用NodeJS / Express / React应用程序时遇到了一些麻烦。

问题是,它不断攀升内存使用量,而且它不会停止。它缓慢而稳定,最终Node崩溃了。我在node-heapdump的帮助下创建了几个堆转换器,但是,我不知道如何正确识别泄漏。

我将分享我的快照图片。请注意,我按浅尺寸排序,所以据说其中一个出现在顶部的对象/类型必定是问题:

enter image description here

正如我在下面看到的那样,我在许多地方都看到了“@ 585中的Promis”,可能就是那个,但我无法确定那条线,功能或组件。

有人可以帮忙吗?如果你愿意,我可以分享更多截图。

感谢。

1 个答案:

答案 0 :(得分:1)

我发现了问题。

我在我的应用程序中使用了React Body Classname,因此当我们加载不同的路径时,我们可以从客户端更改body类。当你进行服务器端渲染时,这个npm模块需要与Rewind()函数一起使用,以避免内存泄漏:

这是我正在讨论的模块:

https://github.com/iest/react-body-classname

并且,为了避免内存泄漏,我们打电话:

BodyClassName.rewind()

在我们的主App.js容器组件的render函数中。这样,用户登陆的URL无关紧要,Rewind()将始终被调用,因此将来可以正确释放可以被垃圾收集的数据。

现在我们的应用程序保持良好稳定的120mb内存使用量。

非常感谢:D