【发布时间】:2014-12-16 15:01:01
【问题描述】:
我可以用
创建一个全局对象JS_NewCompartmentAndGlobalObject
(SM 1.8.5) 或类似功能
但是如何删除全局对象。据我所知,全局对象是有根的,因此没有 GC。最后我可以调用 JS_DestroyContext 但要调用 JS_GC 我必须有一个上下文。全局对象垃圾什么时候回收?
【问题讨论】:
标签: javascript c spidermonkey
我可以用
创建一个全局对象JS_NewCompartmentAndGlobalObject
(SM 1.8.5) 或类似功能
但是如何删除全局对象。据我所知,全局对象是有根的,因此没有 GC。最后我可以调用 JS_DestroyContext 但要调用 JS_GC 我必须有一个上下文。全局对象垃圾什么时候回收?
【问题讨论】:
标签: javascript c spidermonkey
JS_DestroyContext 调用执行垃圾收集以回收上下文全局使用的内存。据推测,您应该在销毁上下文之前将JS::Rooted 设置为JSVAL_NULL,以便在 GC 运行时没有全局的堆栈根。
【讨论】:
阅读此主题topic。如果您想在将来删除它,您需要使用var 创建您的对象。或者,如果您不想使用它,只需将其放入 null。如果这个对象是在没有var 的情况下创建的,在你不关闭窗口之前,它不会被你的 GC 处理。
【讨论】: