首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >调用原生插件时nodejs v8垃圾回收

调用原生插件时nodejs v8垃圾回收
EN

Stack Overflow用户
提问于 2017-06-13 14:36:23
回答 0查看 163关注 0票数 0

我正在开发一个在mac上使用本地插件的电子应用程序,所有组件的工作流程如下: js in electron ->调用addon.node(c++本地插件) ->call dylib使用dlopen和dlsym。

addon通过这种方式从js获取字符串:

代码语言:javascript
复制
NAN_METHOD(CallAsyncFunction) {

    // actions guarantee dll is loaded
    //....

    const char* funcName = *Utf8String(info[0]->ToString());
    const char* funcParam = *Utf8String(info[1]->ToString());

    //get function pointer by dlsym
    //call the function in dylib

}

昨天我们发现了一个非常有趣的bug。当字符串参数很长时,对于大约400字节甚至更长的funcParam字符串,dylib中的日志显示到达的funcParam的长度为0,而以同样方式发送的funcName的长度和内容是正确的。经过一些调试,我猜这个字符串可能已经被垃圾回收了,所以我创建了一个string对象来保存funcParam,然后再次将新指针发送到dylib,它起作用了!

我的问题是: js引擎是如何工作的,使得字符串资源指针在js本机插件中可访问,而在本机插件调用的dylib中不可用?

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44513984

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档