js的新生代垃圾回收知识点总结


Posted in Javascript onAugust 22, 2019

在进行老生代的标记清除法回收以前,还会有一个新生代的垃圾回收算法执行。

新生代和老生代

所谓新生代,指的是新产生的对象;老生代就是经历过新生代垃圾回收后还“存活”下来的对象。

新生代的垃圾回收算法 Scavenge GC

算法很简单:

1. 我们维护一个列表,老生代对象每次指向一个新生对象的时候,记录下来;每次删除指向的时候,删除记录。(这样我们就知道新生代对象里面,哪些对象是存活的了)

2. 我们把新生代对象的内存平均分开 2 份空间From 和 To

3. 每当有新生对象诞生,就会在 From 空间出现

4. 一旦 From 空间被占满,就触发 Scavenge GC

5. 根据维护的列表,我们从 From 空间拿出存活的对象,复制到 To 空间

6. 清空 From 空间 (这样就可以实现把不活跃的对象给回收掉)

7. From To 空间角色互换,开始下一轮循环

其中经历过回收还存活的对象,age++,在 Java 默认情况下,age 15 的时候会晋升到老生代,JS 规定的 age,博主还没查明

还有一种情况,当复制到 To 空间的时候, To 空间已经使用了25%,那么这个对象直接晋升到老生区。

以上对js的新生代垃圾回收浅析做了简单的介绍,感谢大家的阅读和对三水点靠木的支持。

Javascript 相关文章推荐
JavaScript入门教程(11) js事件处理
Jan 31 Javascript
js跟随滚动条滚动浮动代码
Dec 31 Javascript
JavaScript生成的动态下雨背景效果实现方法
Feb 25 Javascript
在JavaScript中使用对数Math.log()方法的教程
Jun 15 Javascript
解决js图片加载时出现404的问题
Nov 30 Javascript
JS实现标签滚动切换效果
Dec 25 Javascript
vue 微信授权登录解决方案
Apr 10 Javascript
vue+webpack模拟后台数据的示例代码
Jul 26 Javascript
一个Vue视频媒体多段裁剪组件的实现示例
Aug 09 Javascript
记React connect的几种写法(小结)
Sep 18 Javascript
javascript获取元素的计算样式
May 24 Javascript
vue中$refs, $emit, $on, $once, $off的使用详解
May 26 Javascript
JS实现移动端在线签协议功能
Aug 22 #Javascript
jQuery表单选择器用法详解
Aug 22 #jQuery
node实现简单的增删改查接口实例代码
Aug 22 #Javascript
微信小程序实现上传图片裁剪图片过程解析
Aug 22 #Javascript
ES6基础之 Promise 对象用法实例详解
Aug 22 #Javascript
ES6基础之数组和对象的拓展实例详解
Aug 22 #Javascript
node express使用HTML模板的方法示例
Aug 22 #Javascript
You might like
php导入csv文件碰到乱码问题的解决方法
2014/02/10 PHP
php GUID生成函数和类
2014/03/10 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
PHP实现的json类实例
2015/07/28 PHP
thinkPHP中验证码的简单使用方法
2015/12/26 PHP
PHP实现倒计时功能
2020/11/16 PHP
身份证号码前六位所代表的省,市,区, 以及地区编码下载
2007/04/12 Javascript
javascript innerHTML、outerHTML、innerText、outerText的区别
2008/11/24 Javascript
缓动函数requestAnimationFrame 更好的实现浏览器经动画
2012/12/07 Javascript
JavaScript中的普通函数与构造函数比较
2015/04/07 Javascript
详解JavaScript中localStorage使用要点
2016/01/13 Javascript
jQuery如何封装输入框插件
2016/08/19 Javascript
vue之数据交互实例代码
2017/06/16 Javascript
boostrap模态框二次弹出清空原有内容的方法
2018/08/10 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
js代码编写无缝轮播图
2020/09/13 Javascript
[04:14]从西雅图到上海——玩家自制DOTA2主题歌曲应援TI9
2019/07/11 DOTA
使用python删除nginx缓存文件示例(python文件操作)
2014/03/26 Python
使用Python微信库itchat获得好友和群组已撤回的消息
2018/06/24 Python
PyQt 实现使窗口中的元素跟随窗口大小的变化而变化
2019/06/18 Python
python实时检测键盘输入函数的示例
2019/07/17 Python
在PyCharm的 Terminal(终端)切换Python版本的方法
2019/08/02 Python
Python 实现一个手机号码获取妹子名字的功能
2019/09/25 Python
python中random.randint和random.randrange的区别详解
2020/09/20 Python
python时间time模块处理大全
2020/10/25 Python
Python抖音快手代码舞(字符舞)的实现方法
2021/02/07 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
澳大利亚免息网上购物:Shop Zero
2016/09/17 全球购物
假日旅行社实习自我鉴定
2013/09/24 职场文书
初一科学教学反思
2014/01/27 职场文书
学生会干部自荐信
2014/02/04 职场文书
医院办公室主任岗位职责
2015/04/01 职场文书
草房子读书笔记
2015/06/29 职场文书
《自己的花是让别人看的》教学反思
2016/02/19 职场文书
本地通过nginx配置反向代理的全过程记录
2021/03/31 Servers
MySQL Shell的介绍以及安装
2021/04/24 MySQL