在Chrome开发者工具中对堆转储文件进行分析(内存泄漏)

3

我正在处理一款NodeJS/Express/React应用程序,它正在生产中使用,但我遇到了一些问题。

问题是,它的内存使用量不断增加,而且没有停止的迹象。它是缓慢而稳定的,最终导致Node崩溃。我使用node-heapdump创建了几个堆转储文件,但是我不知道如何正确地识别内存泄漏。

我将分享一个快照的图像。请注意,我按浅层大小排序,所以顶部出现的其中一个对象/类型可能是问题所在:

enter image description here

如下所示,我看到有很多地方都有“@585中的Promise”,这可能是问题所在,但我无法识别出哪一行、哪个函数或组件。

有人能帮忙吗?如果需要,我可以分享更多截图。

谢谢。


没有人能够向我展示如何识别那个函数? - rmartrenado
1个回答

2
我找到了问题。
我在我的应用程序中使用了React Body Classname,因此当我们加载不同的路由时,我们可以从客户端更改body类。这个npm模块需要与Rewind()函数一起在服务器端呈现时使用,以避免内存泄漏:
这是我所说的模块:

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

为了避免内存泄漏,我们正在调用:
BodyClassName.rewind()

在我们的主要App.js容器组件的渲染函数中。这样,无论用户降落在什么网址上,Rewind()都会被调用,因此可以垃圾回收的数据将来会被正确释放。
现在我们的应用程序保持在一个不错且稳定的120mb内存使用量。
不管怎样,还是谢谢:D

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接