SpiderMonkey GC通知和弱引用

时间:2015-12-28 08:58:58

标签: javascript garbage-collection spidermonkey

当SpiderMonkey收集(或即将收集)某个特定的GC事物时,是否可以通知" ?

在V8中有弱手柄&#34;有回调附加到它们的时候,当V8 GC决定句柄对象变得无法访问时,应该调用这些回调。即使没有调用回调(这可能是根据V8文档),我们仍然可以检查句柄指向的对象是否将使用v8::Persistent<T>::IsNearDeath()收集。

在SpiderMonkey中,我们有PersistentRooted,这是一个强大的参考。但我们没有找到任何方法以弱方式安全地引用对象,因此我们至少可以检查一个(或多个)以下条件:

  • 对象已无法访问;
  • 该对象已被收集;
  • 即将收集对象;
  • 该对象只有一个引用(这是我们的应用程序所持有的引用)

1 个答案:

答案 0 :(得分:1)

  

但是我们没有找到任何方法以弱方式安全地引用对象,因此我们至少可以检查一个(或多个)以下条件

     

[...]

     
      
  • 该对象已被收集;
  •   

这可以通过weak references

来实现

如果要探测它们,可以简单地检查它们是否返回null。

  
      
  • 即将收集对象;
  •   

至少从C代码JSClass finalizer应该允许你这样做。