0

根据 Spidermonkey 的用户指南

https://developer.mozilla.org/En/SpiderMonkey/JSAPI_User_Guide

... jsval 本身并不能保护其所指对象免受垃圾收集器的影响...

我对这句话的理解是,如果我们通过 JS_NewStringCopyZ() 创建一个 JSString,那么返回的值可以随时被 gc'ed。例如

JSString *str=JS_NewStringCopyZ(cx, "hello world");
JS_GC(cx);
//..now my "hello world" JSString is gone

那么我们如何防止上面的str被 gc'ed 呢?我注意到有一个JS_EnterLocalRootScope () 函数,我可以在 JSNative 函数的开头调用它。不幸的是,它现在已被弃用。那么防止gc的正确方法应该是什么?

4

1 回答 1

0

我认为这是蜘蛛猴上的垃圾收集器问题的重复...... JS_AnchorPtr()?- 那里的答案显示了在使用 SpiderMonkey 作为共享库时如何锚定指针以使它们在 GC 中保持活动状态。如果这不能回答您的问题,请编辑以澄清。

于 2012-05-08T02:02:31.663 回答