您的位置:首页 > Web前端 > JavaScript

关于js内存回收机制

2017-05-14 14:48 155 查看
参考: http://blog.chinaunix.net/uid-26672038-id-3522560.html
js的内存回收是有回收器自动回收的,不想c++那样,由开发者自己处理
function test1() {
  var i = {name: 'sss'}
}

function test2() {
  var i = {name: 'ss'};
  return i;
}
var t1 = test1();
var t2 = test2();
test2中的对象{name:
'ss'}不会释放,因为他的地址被返回赋值给了t2,但是i都是有释放的,i的作用只是存储对象的储存地址

js回收机制的方式:

1.标记清理(大部分js引擎),当一个变量进入一个环境时标记Yes,出来No,引擎会定期扫描,如果一个变量没有Yes,只有No就清理

2.引用计数(老版IE),一个变量被引用就加1,如果引用它的变量又引用了其他,就减1,变为0的时候就清除,但是这种方法如果出现循环引用,就会导致内存永远不被释放
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: