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由于机制问题,是采用了引用计数的方式,所以会有循环引用的问题


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

javascript的垃圾回收机制与内存管理

一、垃圾回收机制—GC Javascript具有自动垃圾回收机制(GC:Garbage Collecation),也就是说,执行环境会负责管理代码执行过程中使用的内存。 原理:垃圾收集器会...
  • OLiver_web
  • OLiver_web
  • 2016年12月31日 17:05
  • 2984

面试题——js垃圾回收机制和引起内存泄漏的操作

JS的垃圾回收机制了解吗?        Js具有自动垃圾回收机制。垃圾收集器会按照固定的时间间隔周期性的执行。 JS中最常见的垃圾回收方式是标记清除。 工作原理:是当变量进入环境时,将这个变量标记为...
  • yingzizizizizizzz
  • yingzizizizizizzz
  • 2017年08月17日 15:42
  • 624

js的垃圾回收机制

在js中局部变量只存在函数执行的过程中,在执行过程中,会为这些局部变量在栈或者堆上分配相应的空间储存它们的 值,当执行完毕后,这些局部变量便会备销毁,用来释放内存空间。而这一操作是由垃圾回收机制完成,...
  • WEB_YH
  • WEB_YH
  • 2017年05月23日 17:53
  • 312

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

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

js垃圾回收机制

js的垃圾回收机制有两种 标记清除 引用计数 1.标记清除基本上所有主流浏览器和IE9以上的ie浏览器都使用这种方式。我们知道,我们创建一个函数时会产生一个函数作用域,当然我们还有根作用域。作用域的其...
  • u014787301
  • u014787301
  • 2016年08月10日 15:19
  • 520

Javascript 垃圾回收机制理解

Javascript 垃圾处理机制理解关于Javascript垃圾回收机制定义,我简单搬运下,有一个大概的印象:找出不再使用的变量,然后释放掉其占用的内存,但是这个过程不是时时的,因为其开销比较大,所...
  • panyang01
  • panyang01
  • 2017年04月01日 19:01
  • 366

js中的垃圾回收机制

js具有自动垃圾回收机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。而在C和C++之类的语言中,开发人员的一项基本任务就是手工跟踪内存的使用情况,这是造成许多问题的根源。在编写js程序时,...
  • pvfhv
  • pvfhv
  • 2013年02月19日 08:51
  • 7830

JS的垃圾回收机制和内存分配

1 JS的垃圾回收机制 JS解释器和C#,java的运行环境一样有垃圾回收机制,程序员不需要手动跟踪释放内存。        垃圾回收机制:就是释放那些不再使用的变量。什么是不再使用?就是生命周期结束...
  • qizhiqq
  • qizhiqq
  • 2016年07月08日 11:31
  • 2420

JavaScript垃圾回收机制

先简述一下JavaScript引擎内存分配的几种情况: 1.object new Object(); new MyConstructor(); {a:4,b:5} Object.create(); 2...
  • github_33261002
  • github_33261002
  • 2016年03月22日 17:26
  • 586

简述java垃圾回收机制

简述java垃圾回收机制 一.谁在做Garbage Collection?         一种流行的说法:在C++里,是系统在做垃圾回收;而在Java里,是Java自身在做。 ...
  • oHuiJia1
  • oHuiJia1
  • 2014年05月05日 15:32
  • 1716
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:js 垃圾回收机制
举报原因:
原因补充:

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