JVM:ZGC详解(染色指针,内存管理,算法流程,分代ZGC)

【初始态】在 ZGC 中,内存被划分为固定大小的页面(通常是 2MB),这些页面用于存储对象和管理内存。

【初始标记】ZGC 标记所有从 GC Root 直接可达的对象。

【并发标记&重新映射】

  • 【初次GC】GC Root开始对堆中对象进行可达性分析。
  • 【二次GC】把上次GC "并发迁移" 阶段迁移的对象指针修正指向到新分区。

【再标记】标记上一次标记过程新产生的对象。

【并发转移准备】为对象转移做一些前置准备,比如引用处理、弱引用清理和重定位集选择等。

【初始转移】迁移根节点直接引用的对象到新分区,这个阶段需要停顿所有的应用线程(STW),但由于只迁移根节点直接引用的对象,所以停顿时间很短。

【并发转移】并发迁移“并发标记”阶段标记的对象到新分区(对象引用指针未修改,仍指向旧分区)。

其实,在标记阶段存在两个地址视图M0和M1,上面的过程显示只用了一个地址视图。之所以设计成两个,是为了区别前一次标记和当前标记第二次进入并发标记阶段后,地址视图调整为M1,而非M0。

上一篇:用css和html制作太极图


下一篇:STM32+W5500+以太网应用开发+003_TCP服务器添加OLED(u8g2)显示状态-2 修改源代码