zoukankan      html  css  js  c++  java
  • Javascript垃圾回收机制

          Javascript具有自动垃圾收集机制(GC:Garbage Collection)。这种垃圾收集机制的原理很简单:找出那些不再继续使用的变量,然后释放其占用的内存。垃圾收集器会按照固定的时间间隔,周期性的执行这一操作。

          javascript中最常用的垃圾收集方式是标记清除(mark-and-sweep)。当变量进入环境时,就将这个变量标记为“进入环境”,而当变量离开环境时,这将其标记为“离开环境”。打上“离开环境”标记的变量,会在垃圾回收器执行操作时从删除其占用的空间。总之,GC会自动回收那些没有被引用的对象

    实例1:

    function func(){
      var arr= ["value1","value2"];
      return arr;
    }
    var m = func();
    alert(m);//value1,value2
    

     func函数中局部变量(arr)在函数返回以后,并不一定会被立即回收,而是会等待不再被引用的时候,才会被回收!因为有m一直引用着该数组。但一旦手动将 m = null,该数组将因为无引用被自动回收。

    实例2:

    function outerFunc(){
      var num= 10;
      function innerFunc(){
        num *= 2;
        return num;
      }
      return innerFunc;
    }
    //将innerFunc函数赋值给refInnerFunc
    var refInnerFunc = outerFunc();
    refInnerFunc(); // return 20 变量num依然存在内存中,并可被innerFunc访问并修改
    refInnerFunc(); // return 40
    

    在执行完outerFunc()函数后,其局部变量num并没有被GC回收,而是一直存在内存中,因为在innerFunc中一直保存着对num的引用,所以num不会被GC回收。

     

     

  • 相关阅读:
    Springboot vue 前后分离 跨域 Activiti6 工作流 集成代码生成器 shiro权限
    mybatis3批量更新 批量插入
    Java GC的工作原理详解
    Hadoop的Map侧join
    cut 命令
    head 与 tail
    常用正则
    vim 设置
    Java泛型初探
    linux修改PS1,自定义命令提示符样式
  • 原文地址:https://www.cnblogs.com/iRavior/p/2797832.html
Copyright © 2011-2022 走看看