垃圾收集器
半醉半醒半浮沉
这个作者很懒,什么都没留下…
展开
-
JVM 三色标记
当黑色A指向白色D的时候,并且灰色B指向白色D的引用消失的时候,就会存在漏标的现象。因为此时A是黑色的,不会再扫描了,扫描灰色B的时候找不到白色D,导致D对象扫描不到,从而产生漏标。Rset表存储其他Region区域对象到本对象的引用信息,是的垃圾收集器不需要扫描整个堆内存就能找到垃圾,只需要扫描Rset表即可。当A引用指向其他对象时,将A重新标记为灰色,下次扫描时,重新扫描A的成员遍历。当B-> D的引用消失时,将D推送到GC堆栈,保证还能被GC扫描到。灰色:自身被标记,但是成员变量还没完全被标记。原创 2023-02-02 16:24:11 · 271 阅读 · 1 评论 -
JVM 垃圾收集器
Serival:年轻代,单线程GC清理,存在STW问题(stop the world)其他线程等待GC的清理。4、并发清理(Concurrent Sweep):执行业务线程同时清理标记的GC,这个过程会产生垃圾--浮动垃圾。1、初始标记(InitialMark):单线程标记,标记GC Root直接相关联的对象,存在STW。3、重新标记(Remark):步骤二会产生新的GC,Remark暂停业务线程,标记GC,存在STW。ServivalOld:老年代,单线程GC清理,存在STW问题,采用标记压缩算法。原创 2023-02-02 15:24:55 · 144 阅读 · 0 评论