当前位置: 首页 > news >正文

GC 深入(小白,对gc有一个进一步的了解)

 垃圾回收器的搭配 一般固定

 

一般这年轻代垃圾回收器,老年代垃圾回收器,如上图搭配着使用

  1.8呢默认就是最后边那哥俩

jvm调优 一个就是增加吞吐量  一个就是减少STW的时间。

三色标记算法(理解根可达算法) 并发的可达性分析

有黑白灰三个颜色

最开始的颜色都是白色

刚找到这个对象的时候,把他标记成灰色,然后他的孩子级别的对象都找到时。 把他标记成黑色。他的孩子就是灰色了。

关于可达性分析的扫描过程,读者不妨发挥一下想象力,把它看作对象图上一股以灰色为波峰的
波纹从黑向白推进的过程,如果用户线程此时是冻结的,只有收集器线程在工作,那不会有任何问
题。但如果用户线程与收集器是并发工作呢?收集器在对象图上标记颜色,同时用户线程在修改引用关系——即修改对象图的结构,这样可能出现两种后果。一种是把原本消亡的对象错误标记为存活,这不是好事,但其实是可以容忍的,只不过产生了一点逃过本次收集的浮动垃圾而已,下次收集理掉就好。另一种是把原本存活的对象错误标记为已消亡,这就是非常致命的后果了,程序肯定会因此发生错误

并发出现“对象消失”问题的示意

 Wilson于1994年在理论上证明了,当且仅当以下两个条件同时满足时,会产生“对象消失”的问
题,即原本应该是黑色的对象被误标为白色:
·赋值器插入了一条或多条从黑色对象到白色对象的新引用;
·赋值器删除了全部从灰色对象到该白色对象的直接或间接引用。

因此,我们要解决并发扫描时的对象消失问题,只需破坏这两个条件的任意一个即可。由此分别
产生了两种解决方案:增量更新(Incremental Update)和原始快照(Snapshot At The Beginning,
SATB)。
增量更新要破坏的是第一个条件,当黑色对象插入新的指向白色对象的引用关系时,就将这个新
插入的引用记录下来,等并发扫描结束之后,再将这些记录过的引用关系中的黑色对象为根,重新扫描一次。这可以简化理解为,黑色对象一旦新插入了指向白色对象的引用之后,它就变回灰色对象了。
原始快照要破坏的是第二个条件,当灰色对象要删除指向白色对象的引用关系时,就将这个要删
除的引用记录下来,在并发扫描结束之后,再将这些记录过的引用关系中的灰色对象为根,重新扫描一次。这也可以简化理解为,无论引用关系删除与否,都会按照刚刚开始扫描那一刻的对象图快照来进行搜索。

        以上无论是对引用关系记录的插入还是删除,虚拟机的记录操作都是通过写屏障实现的。在
HotSpot虚拟机中,增量更新和原始快照这两种解决方案都有实际应用,譬如,CMS是基于增量更新来做并发标记的,G1、Shenandoah则是用原始快照来实现。

http://www.lryc.cn/news/110325.html

相关文章:

  • CSS前端面试
  • VB+SQL餐饮管理系统设计与实现
  • React入门学习笔记2
  • Palo Alto Networks® PA-220R 下一代防火墙 确保恶劣工况下的网络安全
  • 架构训练营学习笔记:5-2 负载均衡架构
  • 二叉树的性质、前中后序遍历【详细】
  • 涨姿势了,有意思的气泡 Loading 效果
  • 单片机中断系统
  • 二、JVM-深入运行时数据区
  • 随机验证码vue实现,登录验证码随机验证码数字和字母类型的
  • xlrd与xlwt操作Excel文件详解
  • A Survey of Embodied AI: From Simulators to Research Tasks 论文阅读
  • spark-sql数据重复之File Output Committer问题
  • 面试热题(前中序遍历构建树)
  • 美术:贴图
  • [MAUI]模仿微信“按住-说话”的交互实现
  • windows开机运行jar
  • 使用DockerFile一键创建自定义linux开发环境
  • “深入探索JVM:解密Java虚拟机的工作原理“
  • 【华为OD机试】数字最低位排序【2023 B卷|100分】
  • 【Odoo16前端源码分析】xml模板的加载
  • Open3D (C++) 计算矩阵的广义逆
  • 11.物联网操作系统内存管理
  • 举办活动发布会,如何得到媒体支持?
  • 1139 First Contact(unique函数,string.substr()函数)
  • Python元编程-装饰器介绍、使用
  • python进程池的使用
  • Dockerfile构建lamp镜像
  • LeetCode724. 寻找数组的中心下标
  • 【云计算 | Docker】Docker容器后台运行不了?entrypoint在作妖?