首页 > 解决方案 > 如何找出节点进程中的内存泄漏

问题描述

我的nodejs应用程序正在泄漏内存,所以我试图使用heapdump来比较内存变化,不幸的是,headdump中的内存没有变化,但是我的nodejs进程正在泄漏内存。所以我认为native-modules可能是罪魁祸首,然后我正在使用 mtrace 来解决这个问题。但我无法理解模块“/lib64/libstdc++.so.6”正在增加大小。

有没有人可以帮助给我一些工具或方法的建议来找出堆本身不会发生的内存泄漏。

许多人欣赏。

标签: javascriptnode.jsmemory-leaksgoogle-chrome-devtoolsheap-dump

解决方案


我建议使用有限的堆内存量(例如 --max_old_space_size=100)启动您的 node.js 应用程序,然后等待内存不足的情况发生。

如果发生这种情况,请安装node-oom-heapdump并再次启动该过程。当它现在内存不足时,会自动生成一个 heapdump,向您显示罪魁祸首。它没有发生,没有内存泄漏。

您的堆转储没有显示上升的原因可能是因为垃圾收集器;在进行堆转储之前,垃圾收集器会启动。所以我不确定你是否真的有泄漏;如果垃圾收集修复了堆使用,则没有泄漏。


推荐阅读