JavaScript内存:在结果中返回新对象与存储

时间:2013-12-06 13:07:40

标签: javascript memory garbage-collection

在返回新(临时)对象时,我一直想知道JavaScript中的内存使用和垃圾收集。假设我有一个返回多个值的函数:

function foo() {
    return { a: 0, b: 1, c: 2 };
}

每次调用函数时都会创建一个新的Object。现在,如果我只对返回值感兴趣,我真的不需要那个对象,所以我想到了一个不同的模式:

function bar(result) {
    result.a = 0;
    result.b = 1;
    result.c = 2;
}

理论上,bar应该在foo上节省一些内存。事实上,我在现实世界的应用程序中看过几次这种模式,例如在three.js中,Ray类中有“optionalTarget”参数,因此函数不必在内部创建新向量,而是将结果设置在目标上(Ray.js source)。

然而,在摆弄自定义基准后,我在实践中找不到任何差异。我是基准Javascript的新手,所以问题是:你能创建一个令人信服的基准来显示差异,如果有的话?如果没有,这是否意味着垃圾收集器足够聪明,可以立即丢弃对象?

0 个答案:

没有答案