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

当我们说话的时候,我正在生产NodeJS / Express / React应用程序。

问题是,它不断攀升的内存使用情况,并没有停止。 它是缓慢和稳定的,并最终节点崩溃。 我有几个heapdump,我一直在node-heapdump的帮助下创build,但是,我不知道如何正确识别泄漏。

我将分享我的快照的图像。 请注意,我按浅的大小sorting,所以推测出现在顶部的那些对象/types之一必定是问题:

在这里输入图像说明

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

任何人都可以帮忙? 如果你愿意,我可以分享更多的截图。

谢谢。

我发现了这个问题。

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

这是我正在谈论的模块:

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

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

BodyClassName.rewind() 

在我们的主App.js容器组件的渲染函数中。 这样,不pipe用户登陆什么url,Rewind()都会被调用,所以可以被垃圾回收的数据将来会被正确释放。

现在我们的应用程序停留在一个不错的120mb的内存使用。

D,谢谢