Ajax内存泄漏(memory leak)的学习笔记

s1636149.jpg在《Ajax实战》中第8.3.1章节讲内存泄漏。书中示例代码与在《JavaScript高级程序设计(第2版)》第4.3.4章节中那个简单的示例代码相比要复杂多了。其中第242页中 removePet 示例代码应该是:

Person.prototype.removePet=function(petName){
	var orphan=this.pets[petName];
	this.pets[petName]=null;
	if(orphan.unassignOwner){
		orphan.unassignOwner(this);
	}
}

在这一个示例代码中,局部变量是:给了jim一个宠物猫实例 whiskers 引用的那一行:

jim.addPet(new Cat("whiskers");

全局变量是:给了jim 宠物狗 fido 引用的那一行:

var fido=new Dog("fido");
jim.addPet(fido);

fido 的引用占用着宝贵的内存,这就是内存泄漏的问题。直到第7步解除了引用,随后内存才能被释放

上行引起来的是第243页的最后一行最后一句。这个“随后”是指什么时候呢?按《JavaScript高级程序设计(第2版)》第4章的相关内容来看,是指下次 GC 运行的时候。

而《Ajax实战》书中原文说是第7步内存释放了,到底内存释放被 GC 回收了吗?这里我还心存疑义,从开全局变量空间 到解除引用,这段过程可以按书上说是发生了内存泄漏的问题。但是再到下次GC运行的时候,这段过程还算不算内存泄漏呢?

(完)

转载于:https://www.cnblogs.com/georgewing/archive/2010/02/22/1671247.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值