对浏览器垃圾回收机制的理解

一、浏览器的垃圾回收机制

1、垃圾回收的概念

     javaScript代码运行的时候,需要分配内存空间来存储变量和值。变量不再参与的时候,就需要系统收回被占用的内存空间,这就是垃圾回收

回收机制:
     ● js具有自动垃圾回收机制,会定期对那些不再使用的变量、对象占用的内存进行释放
     ● js 中存在变量,局部变量和全局变量。全局变量的是声明周期会持续到要页面卸载;局部变量声明在函数中,它的生命周期从函数执行开始,直到函数执行结束
     ● 局部变量使用闭包在外部可以使用,函数的执行结束后,函数外部的变量依然指向函数内部的局部变量。此时局部变量仍然在使用,所以不会回收

二、垃圾回收的方式

1、标记清除

      标记清除是浏览器最常见的垃圾回收方式,当环境进入执行环境的时候,被标记为进入环境的变量是不能被回收的,离开环境标记离开,会被内存释放
垃圾收集器在运行的时候会给存储在内存上的所有变量都加上标记,然后去掉环境中的变量以及被环境中的变量引用的标记

2、引用计数

      使用计数器来跟踪对象被引用的对象

三、减少垃圾回收

      浏览器可以进行垃圾自动回收,但是代码复杂的时候,垃圾回收带来的代价比较大,所以应该减少垃圾回收

以下三种方法
      ● 对数组进行优化
       清空一个数组的时候,最简单的方法就是将数组置空,但此时会同时创建一个新的空对象。可以选择将数组长度设为0
      ● 对对象进行优化
       对象尽量复用,对于不再使用的对象,就将其设置为null,尽快被回收
      ● 对函数进行优化
       在循环中的表达式,如果可以复用,尽量放在函数的外面

你可能感兴趣的:(javascript,前端,开发语言)