javascript - 如何找出节点进程中的内存泄漏
问题描述
我的nodejs应用程序正在泄漏内存,所以我试图使用heapdump来比较内存变化,不幸的是,headdump中的内存没有变化,但是我的nodejs进程正在泄漏内存。所以我认为native-modules可能是罪魁祸首,然后我正在使用 mtrace 来解决这个问题。但我无法理解模块“/lib64/libstdc++.so.6”正在增加大小。
有没有人可以帮助给我一些工具或方法的建议来找出堆本身不会发生的内存泄漏。
许多人欣赏。
解决方案
我建议使用有限的堆内存量(例如 --max_old_space_size=100)启动您的 node.js 应用程序,然后等待内存不足的情况发生。
如果发生这种情况,请安装node-oom-heapdump并再次启动该过程。当它现在内存不足时,会自动生成一个 heapdump,向您显示罪魁祸首。它没有发生,没有内存泄漏。
您的堆转储没有显示上升的原因可能是因为垃圾收集器;在进行堆转储之前,垃圾收集器会启动。所以我不确定你是否真的有泄漏;如果垃圾收集修复了堆使用,则没有泄漏。
推荐阅读
- google-sheets - 引用包含特定日期的单元格
- android - React Native 0.61.5 应用程序从 0.61.4 升级后一直停止
- google-apps-script - 谷歌照片API添加照片不起作用,上传似乎工作
- javascript - 我的页面出现问题,因为 onclick 音频不工作
- javascript - 使用 Lodash 从嵌套数组中删除对象
- visual-studio - 升级后Unity编译错误
- laravel - 我可以在通过 laravel 发送电子邮件时将隐藏的令牌放入电子邮件中吗
- json - 如何修复将 yaml 转换为 JSON 的 YAML 文件中的错误?在这种情况下不允许映射值”
- c# - 如何在鼠标路径上生成对象?统一 3D
- jooq - 绑定 OffsetDateTime 时出错 [运算符不存在:带时区的时间戳 <= 字符变化]