JS_ClearNewbornRoots 编辑
Obsolete since JSAPI 5
This feature is obsolete. Although it may still work in some browsers, its use is discouraged since it could be removed at any time. Try to avoid using it.
Clear a context's newborn roots, which temporarily protect newly allocated values from garbage collection.
Syntax
void
JS_ClearNewbornRoots(JSContext *cx);
Name | Type | Description |
---|---|---|
cx | JSContext * | The context to clear. |
Description
The last GC thing of each type (object, string, double, external string types) created on a given context is kept alive until another thing of the same type is created, using a newborn root in the context. These newborn roots help native code protect newly-created GC-things from GC invocations activated before those things can be rooted using local or global roots.
However, the newborn roots can also entrain great gobs of garbage, so the JS_GC
entry point clears them for the context on which GC is being forced. Embeddings may need to do likewise for all contexts.
See JS_EnterLocalRootScope
for a better way to manage newborns in cases where native hooks (functions, getters, setters, etc.) create many GC-things, potentially without connecting them to predefined local roots such as *rval
or argv[i]
in an active JSNative
function. Using JS_EnterLocalRootScope
disables updating of the context's per-gc-thing-type newborn roots, until control flow unwinds and leaves the outermost nesting local root scope.
See Also
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论