当Javascript对象从内存中垃圾收集?

时间:2011-06-24 09:20:54

标签: javascript memory-management

我在这个QnA上看到了类似的线程,但我的具体情况如下。

function render(canvas) {
    var renderer = new Renderer(canvas);
    renderer.render();
}

Renderer.render()<canvas>上绘制了一些内容。现在问题就是这样,所以这意味着实例renderer不是垃圾收集的。这让我想到了我的问题 - 什么时候renderer会被垃圾收集?请注意,除了自己的方法之外,此对象在其他地方没有被引用。

我希望该对象在完成渲染时进行垃圾回收。有没有办法强迫它?

3 个答案:

答案 0 :(得分:1)

以v8方式,没有对象的引用,并且javascript引擎变为空闲。

答案 1 :(得分:1)

垃圾收集的细节不是由ECMAScript规范定义的,因此在不同的浏览器中实现是不同的,但通常在JavaScript中,当没有剩余的引用时,对象可用于垃圾收集。

对于您的示例,将在声明renderer的函数返回时。

答案 2 :(得分:0)

render()中的超时包含对函数的引用,该函数依次保存对渲染器的引用。执行超时后,如果没有设置超时,则不会引用该函数,也不会引用渲染器,因此很容易进行垃圾回收。