js 垃圾回收机制

原创 2016年08月28日 20:05:53

目前JS的垃圾回收机制无非就是两种:1.标记清除(make-and-sweep) 2.引用计数(reference counting

1.标记清除:标记清除简单的来说就是给各个变量名打上 YES or NO的标签以供JS引擎进行处理(当然打什么标签自己理解即可)。在和执行上下文类似的的环境中当变量名称进入环境的时候,那么变量会被打上 YES。一般来说是绝对不会释放被打上 YES 标签的变量内存的,一旦变量在出了该环境时,变会被打上 NO 标签(和作用域貌似有点像),JS引擎会在一定时间间隔或者设置的时间来进行扫描,对NO标签的进行剔除以释放其内存。

2.引用计数(查了很多资料,还是无法找到其真正的计算方式)

一般来说,引用计数的含义是跟踪记录每个值被引用的次数。当声明一个变量并将一个引用类型值赋给该变量时,则这个值的引用次数便是1,如果同一个值又被赋给另一个变量,则该值的引用次数加1,相反,如果包含对这个值引用的变量又取得了另一个值,则这个值的引用次数减1。当这个值的引用次数为0时,说明没有办法访问到它了,因而可以将其占用的内存空间回收。

对于引用计数,我们需要知道如果具有循环引用,那么其计数问题就会暴露,导致计数永远不为0而无法释放内存,导致内存泄露,具体事例如下:

e.g.2

function(){

var a = {};

var b = {};

b.pro = a;

a.pro=b;

}

如果e.g.2使用引用计数的话就会导致问题,内存无法被释放,导致内存无故消耗占用。

除了一些极老版本的IE,目前市面上的JS引擎基本采用标记清除来除了垃圾回收。但是需要注意的是IE中的DOM由于机制问题,是采用了引用计数的方式,所以会有循环引用的问题


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

GC垃圾回收机制

  • 2014年12月19日 14:53
  • 181KB
  • 下载

java垃圾回收机制

  • 2016年06月19日 07:57
  • 14KB
  • 下载

JS中的垃圾回收机制

1.js中的内存管理 js具有自动的垃圾回收机制,也就是执行环境负责管理代码中使用的内存,在编写js时,不用像编写C语言那些需要手动跟踪内存的使用情况,而这种垃圾收集机制的原理很简单,就是定...

Java垃圾回收机制详解

  • 2011年11月19日 14:33
  • 199KB
  • 下载

Java垃圾回收机制

  • 2013年06月17日 01:07
  • 63KB
  • 下载

【红宝书笔记】一点关于JS的垃圾回收机制

JS的回收机制分两种:1.标记清除 2.引用计数。各大浏览器常用的是前者.这两种回收机制的过程都比较清晰易懂。 标记清除:是对于脱离作用域的变量进行回收。当进入作用域时,进行标记,离开作用域时,标记并...
  • natsuyu
  • natsuyu
  • 2016年03月12日 13:36
  • 644

js笔记3之变量的复制,参数传递与垃圾回收机制

1...变量的复制 变量的数据类型,一共2种,一种是基本数据类型:Boolean,Number,string,null,undefined一共五个 另一种是引用类型:object 基本类型的复制...

js垃圾回收机制

转自:http://www.jb51.net/article/75292.htm 一、垃圾回收机制—GC Javascript具有自动垃圾回收机制(GC:Garbage Collecatio...

04期:从JS垃圾回收机制和词源来透视闭包

深入底层(函数的解析和执行过程、JS变量查找机制和JS垃圾回收机制),从里子讲闭包,从词源讲闭包,帮助各位同学理解、会用和用好闭包。...

Java垃圾回收机制的学习和使用

  • 2011年07月27日 10:54
  • 26KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js 垃圾回收机制
举报原因:
原因补充:

(最多只允许输入30个字)