FB-2.0 中的 GC 机制如何释放插件对象?

How does GC-mechanism in FB-2.0 release plugin-objects?

美好的一天!

FireWyrmJS 编辑的所有对象 return 在 Chrome 中 5 秒后自动释放,但我需要保留一些对象与它交互。在 chrome 扩展脚本中完全停用该版本是否安全?或者可以通过某种方式进行过滤:释放哪些对象以及保留哪些对象?

我在 chrome-extension javascripts 中看到了 retain() 和 release() 方法,但我需要一个 web chrome、ie和firefox的页面,所以我希望有更好的解决方案。

我return 对象从插件到浏览器下一个方式:

MyObjectPtr MyPluginAPI::getMyObj()
{
   return std::make_shared<MyObject>(m_host);
}

我已经对其进行了调试,并发现刷新网页时正在调用 MyObject 的析构函数(在 chrome 中)。这样对吗?在那种情况下,插件中的真实对象存在,但由于 5 秒释放,我无法在网页中与它交互。

感谢您的任何建议。

不幸的是,无法自动管理 javascript 和 firewyrm 之间的垃圾回收,因为在 js 对象被 GC 时无法收到通知。禁用该检查绝对 安全——如果您这样做,您最终会导致严重的内存泄漏。相反,你应该在你想要保留的对象上调用 .retain()(当你不再需要它时调用 .release())。