0

Spidermonkeyのユーザーガイドによると

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

... jsval 自体は、ガベージ コレクタから参照先を保護しません...

このステートメントについての私の理解では、たとえば JS_NewStringCopyZ() によって JSString を作成すると、返される値はいつでも gc できるということです。例えば

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

では、上記のstrが gc されないようにするにはどうすればよいでしょうか? JSNative 関数の開始時に呼び出せる JS_EnterLocalRootScope () 関数があることに気付きました。残念ながら、現在は廃止されています。それでは、gcを防ぐ適切な方法は何ですか?

4

1 に答える 1

0

これは、spidermonkey のガベージ コレクターの問題と重複していると思います... JS_AnchorPtr()? -- そこの答えは、SpiderMonkey を共有ライブラリとして使用する場合に、ポインターを固定して GC 全体で存続させる方法を示しています。それがあなたの質問に答えない場合は、編集して明確にしてください。

于 2012-05-08T02:02:31.663 に答える