我在使用NodeJS / Express / React应用程序时遇到了一些麻烦。
问题是,它不断攀升内存使用量,而且它不会停止。它缓慢而稳定,最终Node崩溃了。我在node-heapdump的帮助下创建了几个堆转换器,但是,我不知道如何正确识别泄漏。
我将分享我的快照图片。请注意,我按浅尺寸排序,所以据说其中一个出现在顶部的对象/类型必定是问题:
正如我在下面看到的那样,我在许多地方都看到了“@ 585中的Promis”,可能就是那个,但我无法确定那条线,功能或组件。
有人可以帮忙吗?如果你愿意,我可以分享更多截图。
感谢。
答案 0 :(得分:1)
我发现了问题。
我在我的应用程序中使用了React Body Classname,因此当我们加载不同的路径时,我们可以从客户端更改body类。当你进行服务器端渲染时,这个npm模块需要与Rewind()函数一起使用,以避免内存泄漏:
这是我正在讨论的模块:
https://github.com/iest/react-body-classname
并且,为了避免内存泄漏,我们打电话:
BodyClassName.rewind()
在我们的主App.js容器组件的render函数中。这样,用户登陆的URL无关紧要,Rewind()将始终被调用,因此将来可以正确释放可以被垃圾收集的数据。
现在我们的应用程序保持良好稳定的120mb内存使用量。
非常感谢:D