加入收藏
举报
当前仅显示指定条件回帖 [ 展开查看全部 ]
02-14 18:37
#
文件名称:
V8.md
所在目录:
docs / JavaScript
文件大小:
1.42 KB
下载地址:
i-want-offer/FE-Essay
   
免责声明:本网站仅提供指向 GitHub 上的文件的链接,所有文件的版权归原作者所有,本网站不对文件内容的合法性、准确性或安全性承担任何责任。
文本预览:
# V8
## 垃圾回收机制
> 垃圾回收:将内存中不再使用的数据进行清理,释放内存空间。
>
> V8 将内存分为 **新生代空间** 和 **老生代空间**
### 新生代空间
> 用于存活较短的对象
* 又分为两个空间:from 空间和 to 空间
* Scavenge GC 算法:当 from 空间被占满时,启动 GC 算法
* 存活的对象从 from 空间转移到 to 空间
* 清空 from 空间
* from 空间和 to 空间互换
* 完成一次新生代 GC
### 老生代空间
> 用于存活较长的对象
* 从新生代空间转移到老生代空间的条件
* 经历一次以上 Scavenge GC 的对象
* 当 to 空间体积超过25%
* **标记清除算法**:标记存活的对象,未被标记的则被释放
* 增量标记:小模块标记,在代码执行间隙执行,GC 会影响性能
* 并发标记(最新技术):不阻塞 JS 执行
* **压缩算法**:将内存中清除后导致的碎片化对象往内存堆的一端移动,解决 **内存碎片化**
## 内存泄漏
* 意外的 **全局变量**:无法被回收
* **定时器**:未被正确关闭,导致所引用的外部变量无法被释放
* **事件监听**:没有正确销毁(低版本浏览器可能出现)
* **闭包**:会导致父级中的变量无法被释放
* **dom 引用**:dom 元素被删除时,内存中的引用未被正确清空
点赞 回复
回帖
支持markdown部分语法 ?