c++ - 节点 FFI 回调。内存泄漏
问题描述
我们有一个 DLL,它提供对“特定”Windows 应用程序的监听事件的访问。我已经编写了自定义 C++ 包装器,用于在外部 DLL 和我的 Node JS 应用程序之间创建桥梁。以下是如何建立通信的部分代码:
const connectionCallback = ffi.Callback('void', ['string'], (data) => app.eventEmitter.emit(INTERNAL_EVENTS.CONNECTION, data));
const quotesCallback = ffi.Callback('void', ['string'], (data) => app.eventEmitter.emit(INTERNAL_EVENTS.QUOTE, data));
const eventsCallback = ffi.Callback('void', ['string'], (data) => app.eventEmitter.emit(INTERNAL_EVENTS.EVENT, data));
问题。我只花了 6 小时观察 C++ 代码中的内存使用情况(当我在没有 Node 的情况下运行它时)并且发现了节点内存泄漏。我对 Node 做了同样的事情(我已经安装了 heapdump 包并比较了远距离的快照)。根据快照,在我的应用程序中没有发现内存泄漏。
但是应用程序的内存使用量会增长。开始时 300mb,2 小时后 500mb,20 小时后接近 1gb。你知道我们可以使用什么工具来发现泄漏吗?
我发现类似的主题没有答案(node-ffi github 问题),该主题始于 2013 年,但我希望该解决方案已经存在 :) 谢谢。
解决方案
推荐阅读
- r - 从字符转换为数字时丢失尾随小数零
- git - 如何使用 Ubuntu (systemd)、Github 和 SSH 密钥在启动时从 git 中提取
- c# - 我想增加itextsharp pdf创建中第一列的宽度
- php - 我的 Laravel 网站很慢我怎样才能让它变得更快?
- firebase - 从 firestore 子集合中检索快照到 dart/flutter 对象
- html - 为什么我的列表样式类型:片假名在我的课堂上不起作用
- python - 如何在Python中动态替换字典的键?
- vb.net - ShowMsg("您以管理员身份登录!", False)
- python - 在“and”语句中使用多个“or”
- python - cd directory_name python python_file.py 在命令行中给出错误“系统找不到指定的路径”