首页 > 解决方案 > 节点 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 年,但我希望该解决方案已经存在 :) 谢谢。

标签: c++node.jsmemory-leaksffinode-ffi

解决方案


推荐阅读