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);
NameTypeDescription
cxJSContext *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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

词条统计

浏览:93 次

字数:3563

最后编辑:6年前

编辑次数:0 次

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文