我如何检测垃圾收集器是否删除了一个对象?

时间:2014-03-21 15:10:29

标签: javascript google-chrome garbage-collection

我需要一种方法来检测GC在Javascript上特定的V8引擎处理对象的时间(我需要实现与谷歌浏览器和节点相关的工作)

1 个答案:

答案 0 :(得分:2)

除非可能通过某种调试挂钩,否则不能在程序中使用。

EcmaScript委员会明确拒绝了a proposal,部分原因是它间接暴露了这样的事情:

  

请注意makeWeakRef对于一般访问是不安全的,因为它允许访问观察垃圾收集中固有的非确定性。由此产生的辅助渠道会显示可能违反其他计划保密性假设的信息。

换句话说,能够告诉对象何时被垃圾收集可能允许JavaScript收集有关违反同源策略的其他代码的信息。


从V8的嵌入API,您可以通过makeWeak callback获得有关某些对象的通知:

  

当只有弱句柄引用该对象时,垃圾收集器将执行对给定V8::WeakReferenceCallback函数的回调,并将对象引用和给定参数传递给它。