网站空间域名免费,wordpress做一个说说页面,如何建设游戏网站,php网站开发软件是什么垃圾回收器的搭配 一般固定 一般这年轻代垃圾回收器#xff0c;老年代垃圾回收器#xff0c;如上图搭配着使用 1.8呢默认就是最后边那哥俩
jvm调优 一个就是增加吞吐量 一个就是减少STW的时间。
三色标记算法#xff08;理解根可达算法#xff09; 并发的可达性分析
有… 垃圾回收器的搭配 一般固定 一般这年轻代垃圾回收器老年代垃圾回收器如上图搭配着使用 1.8呢默认就是最后边那哥俩
jvm调优 一个就是增加吞吐量 一个就是减少STW的时间。
三色标记算法理解根可达算法 并发的可达性分析
有黑白灰三个颜色
最开始的颜色都是白色
刚找到这个对象的时候把他标记成灰色然后他的孩子级别的对象都找到时。 把他标记成黑色。他的孩子就是灰色了。 关于可达性分析的扫描过程读者不妨发挥一下想象力把它看作对象图上一股以灰色为波峰的 波纹从黑向白推进的过程如果用户线程此时是冻结的只有收集器线程在工作那不会有任何问 题。但如果用户线程与收集器是并发工作呢收集器在对象图上标记颜色同时用户线程在修改引用关系——即修改对象图的结构这样可能出现两种后果。一种是把原本消亡的对象错误标记为存活这不是好事但其实是可以容忍的只不过产生了一点逃过本次收集的浮动垃圾而已下次收集理掉就好。另一种是把原本存活的对象错误标记为已消亡这就是非常致命的后果了程序肯定会因此发生错误 并发出现“对象消失”问题的示意 Wilson于1994年在理论上证明了当且仅当以下两个条件同时满足时会产生“对象消失”的问 题即原本应该是黑色的对象被误标为白色·赋值器插入了一条或多条从黑色对象到白色对象的新引用·赋值器删除了全部从灰色对象到该白色对象的直接或间接引用。 因此我们要解决并发扫描时的对象消失问题只需破坏这两个条件的任意一个即可。由此分别 产生了两种解决方案增量更新Incremental Update和原始快照Snapshot At The Beginning SATB。 增量更新要破坏的是第一个条件当黑色对象插入新的指向白色对象的引用关系时就将这个新 插入的引用记录下来等并发扫描结束之后再将这些记录过的引用关系中的黑色对象为根重新扫描一次。这可以简化理解为黑色对象一旦新插入了指向白色对象的引用之后它就变回灰色对象了。 原始快照要破坏的是第二个条件当灰色对象要删除指向白色对象的引用关系时就将这个要删 除的引用记录下来在并发扫描结束之后再将这些记录过的引用关系中的灰色对象为根重新扫描一次。这也可以简化理解为无论引用关系删除与否都会按照刚刚开始扫描那一刻的对象图快照来进行搜索。 以上无论是对引用关系记录的插入还是删除虚拟机的记录操作都是通过写屏障实现的。在 HotSpot虚拟机中增量更新和原始快照这两种解决方案都有实际应用譬如CMS是基于增量更新来做并发标记的G1、Shenandoah则是用原始快照来实现。