【发布时间】:2014-03-18 15:59:39
【问题描述】:
假设我有一个对象:
var o1 = {
someKey: 'value'
};
以及引用第一个对象的另一个对象:
var o2 = {
o1Ref: o1
};
还有第三个对象引用第一个对象的属性:
var o3 = {
o1propRef: o1.someKey
};
然后,假设o2 被垃圾回收。 o3 上对o1.someKey 的引用是否会阻止收集o1?
那么,同样,假设o1 更大,比如说:
var o1 = {
someKey: 'value',
someBigValue: Buffer(2000000)
};
o1 中未被引用的部分是否可以被收集,或者对象是否被作为一个整体收集?看来,o1 的第二个版本,o3 只是坚持o1.someKey 和o1.someBigValue 可以释放。
另外,我确实意识到这可能因实现而异。如果是这样的话,一般来说,最好的方法是什么?
【问题讨论】:
标签: javascript memory memory-management memory-leaks garbage-collection