垃圾回收机制

原理:找出不再继续使用的变量,然后释放掉其占用的内存。

策略1:标记清除

当变量进入环境(可以理解为一个函数开始执行了)时,就将这个变量标记为“进入环境”,从逻辑上讲,不能释放掉进入环境的变量,而当变量离开环境的的时候,则将其标记为离开环境。

  1. 垃圾收集器在运行的时候会给存储在内存中的所有变量都加上标记
  2. 去掉环境中的变量以及被环境中的变量引用的变量的标记。
  3. 此后再被加上标记的变量将被视为准备删除的变量,因为环境中的变量已经无法访问到这些变量了。

策略2:引用计数

跟踪记录每一个值的引用次数,当声明了一个变量并将一个引用类型值赋给该变量的时候,这个引用类型的引用次数就是1,如果同一个值又被赋值给另一个变量,这个值的引用次数加1.如果包含对这个值引用的变量又取得了另一个值,则这个值的引用次数减1,当这个值引用次数为0的时候,就可以将这个引用值所占的内存空间回收回来。

缺点:

如果存在循环引用的情况,那么这个引用值占的空间就永远不会被回收。


  转载请注明: TomoFur 垃圾回收机制

 上一篇
JavaScript学习过程中遇到的经典算法题 JavaScript学习过程中遇到的经典算法题
说明:这个帖子旨在记录在学习JavaScript期间遇到的一些有趣的编程题。 平衡括号题目描述:在编写代码并且编译时,难免会因为少写了一个’)’和被编译器报错。也就是说,编译器会去匹配括号是否匹配。当你输入了一个’(‘,很自然编译器回去检查
2019-05-05
下一篇 
字符串常用方法 字符串常用方法
.length返回字符换长度 .charAt(索引)返回指定索引位置的字符,如果索引超过了字符串长度会返回空串 .charCodeAt(索引)返回给定索引位置的字符的字符编码 var str = 'hello'; console.log(s
2019-04-30
  目录