展会信息港展会大全

javascript中的垃圾回收
来源:互联网   发布日期:2016-01-26 10:22:06   浏览:1782次  

导读:1引用计数垃圾回收 核心:跟踪记录对象被引用的次数。思路是如果一个对象A被赋值给了一个变量v,则该对象A的引用计数值加1,如果变量v又被赋予其他值了,比如 a=str,则该对象A的引用计数值减1 当这个引用计 ...

1引用计数垃圾回收

核心:跟踪记录对象被引用的次数。思路是如果一个对象A被赋值给了一个变量v,则该对象A的引用计数值加1,如果变量v又被赋予其他值了,比如 a="str",则该对象A的引用计数值减1.当这个引用计数值变成0时,就表明它所占的内存空间可以被回收了。

1 var A={b:4};

2 var v=A;//此时A的引用计数值为1

3 var vv=A; //此时A的引用计数值为2

4 v=9;//A的引用计数值为1

5 vv="hah";//A的引用计数值为0,当垃圾收集器下次运行时,A就被回收

如果出现了循环引用:

1 var A={b:4,c:null};

2 var B={a:4,c:null};

3

4 A.c=B; //B的引用计数值为1

5 B.c=A;//A的引用计数值为1,此时他们互相引用,就不会被回收

2标记清除

核心:当变量进入执行环境时,标记为 进入环境 ,但变量离开环境时,标记为 离开环境 。当垃圾收集器遇到标记为 离开环境 的变量时,就将它们所占的内存空间回收。

1 function A(){

2 var a=12; //进入函数A时,预解析将a先申明,并被标记为 进入环境

3 }

4 //执行完函数A后, a被标记为 离开环境

赞助本站

人工智能实验室

相关热词: 垃圾回收 javascript

AiLab云推荐
展开

热门栏目HotCates

Copyright © 2010-2024 AiLab Team. 人工智能实验室 版权所有    关于我们 | 联系我们 | 广告服务 | 公司动态 | 免责声明 | 隐私条款 | 工作机会 | 展会港