##垃圾收集##
**3. 垃圾收集**
JavaScript具有自动垃圾收集机制,也就是说,执行环境会负责管理代码执行过程中使用的内存。
垃圾收集机制的原理:找出那些不再继续使用的变量,然后释放其占用的内存。
垃圾收集器是按固定的时间间隔,周期性地执行回收操作。
垃圾收集器如何判断哪些变量不需要使用了呢?常见的有两种方式
**(1)标记清除**
当变量进入环境(比如在函数中声明一个变量)时,就将这个变量标记为“进入环境”。
标记变量的方式可以是任意的。
垃圾收集器在运行时会给存储在内存中的所有变量都加上标记。然后,它会去掉环境中的变量以及被环境中的变量引用的变量的标记,而在此之后再被标记的变量将被视为待删除的变量,原因是环境中的变量以及无法访问到这些变量了,最后完成内存清除工作,销毁那些带标记的值并回收它们占用的内存空间。
**(2) 引用计数**
引用计数是不太常见的垃圾收集策略。引用计数可以说是跟踪记录每个值被引用的次数。比如:当声明了一个变量并将一个引用类型值赋给变量时,则这个值的引用次数是1,当同一个值又被赋给另一个变量,则该值的引用次数加1,相反,当包含对这个值引用的变量取得了另外一个值(也就是不指向前面的值)时,这个值的引用次数减1,当这个值的引用次数为0时,就会被销毁并释放内存空间了。
解除引用:一旦数据不再有用,最好通过将其值设置为null来释放其引用。
- 前言
- JavaScript简介
- 基本概念
- 语法
- 数据类型
- 运算符
- 表达式
- 语句
- 对象
- 数组
- 函数
- 引用类型(对象)
- Object对象
- Array对象
- Date对象
- RegExp对象
- 基本包装类型(Boolean、Number、String)
- 单体内置对象(Global、Math)
- console对象
- DOM
- DOM-属性和CSS
- BOM
- Event 事件
- 正则表达式
- JSON
- AJAX
- 表单和富文本编辑器
- 表单
- 富文本编辑器
- canvas
- 离线应用
- 客户端存储(Cookie、Storage、IndexedDB)
- HTML5 API
- Video/Audio
- Geolocation API
- requestAnimationFrame
- File API
- FullScreen API
- IndexedDB
- 检测设备方向
- Blob
- vibrate
- Luminosity API
- WebRTC
- Page Visibility API
- Performance API
- Web Speech
- Notification
- 面向对象的程序设计
- 概述
- this关键字
- 原型链
- 作用域
- 常用API合集
- SVG
- 错误处理机制
- JavaScript开发技巧合集
- 编程风格
- 垃圾回收机制