我正在处理一款NodeJS/Express/React应用程序,它正在生产中使用,但我遇到了一些问题。 问题是,它的内存使用量不断增加,而且没有停止的迹象。它是缓慢而稳定的,最终导致Node崩溃。我使用node-heapdump创建了几个堆转储文件,但是我不知道如何正确地识别内存泄漏。 我将分享一个快照的图像。请注意,我按浅层大小排序,所以顶部出现的其中一个对象/类型可能是问题所在: 如下所示,我看到有很多地方都有“@585中的Promise”,这可能是问题所在,但我无法识别出哪一行、哪个函数或组件。 有人能帮忙吗?如果需要,我可以分享更多截图。 谢谢。
我找到了问题。我在我的应用程序中使用了React Body Classname,因此当我们加载不同的路由时,我们可以从客户端更改body类。这个npm模块需要与Rewind()函数一起在服务器端呈现时使用,以避免内存泄漏:这是我所说的模块: https://github.com/iest/react-body-classname 为了避免内存泄漏,我们正在调用:BodyClassName.rewind() 在我们的主要App.js容器组件的渲染函数中。这样,无论用户降落在什么网址上,Rewind()都会被调用,因此可以垃圾回收的数据将来会被正确释放。现在我们的应用程序保持在一个不错且稳定的120mb内存使用量。不管怎样,还是谢谢:D