0

このようなコードがあるとしましょう

var obj = {};
obj.a = obj;

最新のブラウザは、この場合メモリ リークが発生しない Mark-and-sweep アルゴリズムを実装していることを知っています。しかし、参照カウントを実装する古いブラウザーがこれを循環参照と見なすかどうかはわかりません。

私の意見では、参照カウントが 1 (同じオブジェクトの "a" プロパティによって参照される) であるため、メモリ リークが発生するはずです。オブジェクトが単独で参照されている場合、参照カウントが 1 であるか、ブラウザーが参照カウントを増加させないというのは正しいですか?

4

1 に答える 1

1

Older browsers (I'm assuming you're talking about things like IE6) don't have a problem with the reference you list as it's entirely contained within javascript and they handle it fine.

Where older browsers have circular reference problems is when you have circular references between javascript objects and DOM objects. If you don't store DOM objects in persistent javascript variables or you don't store references to javascript objects in DOM properties, then you won't run into this issue. It is no longer an issue in modern browsers either.

于 2013-05-10T03:55:56.790 に答える