我正在进入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);
Run Code Online (Sandbox Code Playgroud)
...这会在Javascript中创建一个可能导致内存泄漏的参考循环吗?
第二个问题是,当你关闭浏览器的标签时,这个参考循环会被删除吗?
不,来自https://developer.mozilla.org/en-US/docs/Web/JavaScript/Memory_Management
截至2012年,所有现代浏览器都提供了标记 - 清除垃圾收集器.
标记和清除垃圾收集器可以处理参考周期.
新Map类型非常谨慎,以避免使用Ephemerons使弱引用循环变得困难.请参阅https://vimeo.com/9965316
| 归档时间: |
|
| 查看次数: |
23 次 |
| 最近记录: |