【问题标题】:How does GC-mechanism in FB-2.0 release plugin-objects?FB-2.0 中的 GC 机制如何释放插件对象?
【发布时间】:2016-08-30 07:24:02
【问题描述】:

美好的一天!

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

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

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

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

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

感谢您的任何建议。

【问题讨论】:

    标签: firebreath


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-20
      • 2016-04-06
      • 1970-01-01
      • 2017-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多