请选择 进入手机版 | 继续访问电脑版

JavaScript内存管理

发表于 04-18 16:01 显示全部楼层 24 445

自动垃圾回收机制Garbage Collection

也就是说,执行环境会负责管理代码执行过程中使用的内存。

 

原理:垃圾收集器会定期(周期性)找出那些不再续使用的变量,然后释放其占用内存。

 

内存生命周期:

1、内存的分配:当我们申明变量、定义函数时,系统会在栈堆内存上为他们分配相应的空间来存储他们的值。

blob.png 

2、内存使用:即读写内存,也就是使用变量、函数等

 

3内存回收:使用完毕,由垃圾回收自动回收不再使用的内存

 

引用计数reference counting):

引用计数的含义是跟踪记录每个值被引用的次数。

 

当声明了一个变量并将一个引用类型值赋给该变量时,则这个值的引用次数就是1

相反,如果该变量又重新被赋值另外一个引用类型的值或者是基本数据类型的值。那么之前那个值的引用次数减1变成0,则变成0说明这个值没有被访所以,垃圾收集器会在下次再运行时就将占用的内存空间释放掉。

blob.png

问题:内存泄漏

 

对象之间循环的引用,它们的引用次数永远都不会为0,系统无法回收没用内存。

blob.png

所以我们需要标记清除

标记清除:Mark-Sweep

现代大部分浏览器的采用基于这个标记清除算法改进后的其他算法:复制算法 、标记  - 整理算法。


回复 使用道具
举报
目定口呆

发表于 05-14 09:05 显示全部楼层

回复 支持 反对 使用道具
举报
张比亚

发表于 05-09 08:41 显示全部楼层

以诚感人者,人亦诚而应。一点回复,敬请笑纳!

回复 支持 反对 使用道具
举报
ttplayboy

发表于 05-08 03:51 显示全部楼层

回复 支持 反对 使用道具
举报
莨上指

发表于 05-06 12:48 显示全部楼层

前排支持!!

回复 支持 反对 使用道具
举报
艇仔饭

发表于 05-06 05:00 显示全部楼层

回复 支持 反对 使用道具
举报
正怒月神

发表于 05-05 20:42 显示全部楼层

回复 支持 反对 使用道具
举报
随手拾起

发表于 05-02 22:24 显示全部楼层

楼主再见

回复 支持 反对 使用道具
举报
追风筝的孩子

发表于 05-01 19:37 显示全部楼层

回复 支持 反对 使用道具
举报
苍了夏靡

发表于 05-01 19:37 显示全部楼层

回复 支持 反对 使用道具
举报
123下一页

发表新文章
zzzy

小码哥准会员

0

学分

2

学币

174

积分

小码哥准会员

Rank: 2

积分
174

关注新浪微博关注小码哥教育公众号

Ta的主页 发消息
精华帖排行榜

精彩推荐

  • 关注小码哥教育