首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

聊聊ShenandoahGC的Brooks Pointers

的第一步是拷贝from-region的对象到to-region evacuation的第二步使用CAS改变from-region的对象的forwarding pointer由自己变为指向to-region...的拷贝对象 evacuation的第三步就是遍历heap,更新引用到to-region的拷贝对象 如果在evacuation期间,其他线程通过旧的引用访问到了from-region的旧对象,它就需要根据旧对象的...阶段,对from-region的对象的写操作会触发该对象的evacuation操作(如果该对象在to-region还没有copy的话) evacuation stub evacuate(obj) {...的第一步是拷贝from-region的对象到to-region;evacuation的第二步使用CAS改变from-region的对象的forwarding pointer由自己变为指向to-region...的拷贝对象;evacuation的第三步就是遍历heap,更新引用到to-region的拷贝对象 doc forwarding pointer Shenandoah: A pauseless GC for

1.3K30

Shenandoah GC:一个来自JDK12的全新并发压缩垃圾回收器

概述 JDK12新增的一个名为Shenandoah的GC算法,它的evacuation阶段工作能通过与正在运行中Java工作线程同时进行(即并发,concurrent),从而减少GC的停顿时间。...然后并发标记阶段,Shenandoah GC和Java工作线程一起运行,最后,在最终标记阶段,又会STW,然后执行一个并发evacuation阶段。...Concurrent Evacuation 从垃圾收集集合中拷贝存活的对到其他的region中,这是有别于OpenJDK其他GC主要的不同点。...Concurrent Update References 再次遍历整个堆,更新那些在并发evacuation阶段被移动的对象的引用。...G1很多工作都是并行或者并发的,但是evacuation阶段不能并发执行。 4.

1.3K10

做数据开发就不需要了解G1了么?

2、拷贝存活对象(EvacuationEvacuation阶段是全暂停的。它负责把一部分region里的活对象拷贝到空region里去(并行拷贝),然后回收原本的region的空间。...导致G1 Full GC的原因可能有两个: Evacuation的时候没有足够的to-space来存放晋升的对象; 并发处理过程完成之前空间耗尽 Young GC日志 通过使用-XX:+PrintGCDetails...① 四个关键信息 2016-12-12T10:40:18.811-0500:GC发生的时间(通过设置-XX:+PrintGCDateStamps打印) 29.959:相对JVM启动的时间 G1 Evacuation...Pause (young):GC类型,表示这是evacuation停顿,并且是Young GC。...①标明标记阶段开始 GC pause (G1 Evacuation Pause) (young) (initial-mark):利用STW停顿期间,跟踪所有可达对象,该阶段和Young GC一起执行。

86020
领券