FB-2.0中的GC机制如何发布插件对象?

时间:2016-08-30 07:24:02

标签: firebreath

美好的一天!

FireWyrmJS返回的所有对象在Chrome中5秒后自动释放,但我需要保留一些对象与之交互。在Chrome扩展脚本中是否可以安全地停用该释放?或者可以过滤某种方式:要释放什么对象以及要保留哪些对象?

我在chrome-extension javascripts中看到保留()和发布()方法,但我需要一个chrome网页,即firefox,所以我希望更好的解决方案。

我将对象从插件返回到浏览器:

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

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

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

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