【问题标题】:Call native code when a JS value is garbage collected当 JS 值被垃圾回收时调用本机代码
【发布时间】:2020-06-24 11:20:18
【问题描述】:

在我的应用程序中,我创建了一些 JS 对象,并在 C++ 端创建了一些用于运行某些处理的对象。 我想在不再需要 C++ 对象时删除它们:对应的 JS 对象是 Garbage Collected

我试图在 Cobalt 源代码/文档中找到它,但我找不到。我确实看到了 ScriptValue::Reference 但这似乎是相反的: 通过声明 JS 值和 C++ 对象之间的关系来防止 JS 对象被垃圾回收。

有人可以提供一些提示如何实现吗? (当对象被垃圾回收时,在 C++ 中调用一些回调)。

【问题讨论】:

    标签: cobalt


    【解决方案1】:

    任何暴露给 JavaScript 的 C++ 类都必须继承(直接或间接)script::Wrappable,它有一个虚拟析构函数。当相应的 JavaScript 对象因垃圾回收或 JS VM 拆除而被销毁时,将调用此析构函数。

    通常需要注意:GC 顺序和时间是不确定的。如果您需要尽快释放关键资源,请向 JavaScript 公开显式清理方法。

    请参阅cobalt::dom::Node::~Node(),了解销毁时执行的清理示例。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-07-11
      • 1970-01-01
      • 2014-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多