Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • PHP

  • Golang

  • Python

  • Javascript

    • PureMVC

      • PureMVC(JS版)源码解析:认识PureMVC
      • PureMVC(JS版)源码解析01:观察者模式解析
      • PureMVC(JS版)源码解析02:Notification类
      • PureMVC(JS版)源码解析03:Observer类
      • PureMVC(JS版)源码解析04:Notifier类
      • PureMVC(JS版)源码解析05:SimpleCommand类
      • PureMVC(JS版)源码解析06:MacroCommand类
      • PureMVC(JS版)源码解析07:Mediator类
      • PureMVC(JS版)源码解析08:Proxy类
      • PureMVC(JS版)源码解析09:View类
      • PureMVC(JS版)源码解析10:Controller类
      • PureMVC(JS版)源码解析11:Model类
      • PureMVC(JS版)源码解析12:Facade类
      • PureMVC(JS版)源码解析:总结
    • 从一个基础Javascript面试题谈起
    • Javascript垃圾回收机制
    • Javascript实现双向数据绑定
    • 浏览器渲染网页过程
    • 浏览器资源缓存机制总结
  • 其他语言

  • 编程语言
  • Javascript
Ravior
2012-12-01

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

1
2
3
4
5
6
7

实例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

1
2
3
4
5
6
7
8
9
10
11
12
13
14

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

#Javascript#Web前端
上次更新: 2022/12/01, 11:09:34
从一个基础Javascript面试题谈起
Javascript实现双向数据绑定

← 从一个基础Javascript面试题谈起 Javascript实现双向数据绑定→

最近更新
01
常用游戏反外挂技术总结
11-27
02
Golang开发实践万字总结
11-11
03
Redis万字总结
10-30
更多文章>
Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式