关闭标签时Javascript引用循环?

时间:2015-07-05 02:17:10

标签: javascript

我正在尝试Javascript,我担心内存泄漏,因为我试图在那里进行面向对象的编程。

如果我执行以下操作:

function ObjectOne() {
  this.setRelation = function(objectTwo) {
    this.objectTwo = objectTwo;
  }
}

function ObjectTwo() {
  var self = this;
  self.setRelation = function(objectOne) {
    this.objectOne = objectOne;  
    objectOne.setRelation(self);
  }
}

var objOne = new ObjectOne();
var objTwo = new ObjectTwo();
objTwo.setRelation(objOne);

...这会在Javascript中创建一个可能导致内存泄漏的参考循环吗?

第二个问题是,当您关闭浏览器的标签时,是否会取消此参考循环?

1 个答案:

答案 0 :(得分:5)

没有。来自this PHP bug #64173

  

截至2012年,所有现代浏览器都提供了标记 - 清除垃圾收集器。

标记和清除垃圾收集器可以处理参考周期。

新的https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management类型非常谨慎,可以通过Map避免弱引用循环变硬。见Ephemerons