小编aug*_*hey的帖子

HandleScope背后的设计理念是什么?

V8需要声明HandleScope才能清除在作用域内创建的任何Local句柄.我知道HandleScope将取消引用这些句柄进行垃圾收集,但我很感兴趣为什么每个Local类都不会像大多数内部ref_ptr类型的助手那样自行解除引用.

我的想法是,HandleScope可以通过一次性转储大量句柄而不是像在ref_ptr类型作用域类中那样逐个转储来更有效地完成它.

v8

17
推荐指数
2
解决办法
3085
查看次数

垃圾收集关闭规则与Javascript

我有一个程序,它使用Javascript作为绑定到更大的C++应用程序的脚本语言.我可以互换地使用V8和webkit,但底层运行时对于这个问题并不重要.

在这个应用程序中,我有动态创建的对象将接收回调.我会像这样创建这个回调绑定...

function f() {
  var obj = CreateNewCallbackObj();
  obj.onCallback = dowork; // dowork is a function
}
Run Code Online (Sandbox Code Playgroud)

很明显,这会产生GC问题,因为obj已超出范围,最终将被删除.

我想要的是对象自我管理它的生命周期.该对象最终会收到一个回调,它将指示其生命的结束,当发生这种情况时,它可以自行删除.

一个想法是通过添加obj.myself = obj来自我引用.这似乎是错误的方法,但它可能会工作,除非垃圾收集算法是聪明的.

有没有正确的方法来做到这一点?没有构建用于存储对象的基础持久性DOM,所有JS对象都根据需要动态分配,但需要某种方式在JS引擎中保留.

javascript garbage-collection

7
推荐指数
1
解决办法
1500
查看次数

标签 统计

garbage-collection ×1

javascript ×1

v8 ×1