目录如下:前言第1章垃圾回收器概述 11.1 垃圾回收算法 21.2 JVM垃圾回收器 21.2.1 串行回收 31.2.2 并行回收 41.2.3 CMS 41.2.4 G...
目录如下:前言第1章垃圾回收器概述 11.1 垃圾回收算法 21.2 JVM垃圾回收器 21.2.1 串行回收 31.2.2 并行回收 41.2.3 CMS 41.2.4 G...
@D_GrayMan 这两行日志和这个bug无关,日志表示使用内存映射来支持color pointer(也就是多视图地址映射)。有一个参数ZPath可以控制
<新一代垃圾回收器ZGC设计与实现>一书中第六章和第七章分别介绍了每一行日志的含义,以及ZGC中所以支持的参数
ZGC源码分析(6)- 日志分析根据ZGC运行的情况,截取部分关键的日志信息。分析如下: ZGC初始化信息 这一部分主要是ZGC初始化的状态。从日志我们看出JVM的版本,是否支持NUMA,大爷内存等。还有C...
@Pramyness 这个问题比较复杂。最简单的回答,ZGC再对象标记的时候,区分一般的对象和实现了finalize的对象。使用了2个bits来标记对象是强引用到达,还是非强引用到达。利用2个位可以做到:判断对象是否需要回收,对象在标记过程中该如何处理。
复杂的回答,涉及到finalizer的注册,引用的发现,引用的处理和引用的再激活动作(即引用在垃圾回收如何处理的整个过程),这一部分我正在写,回头可以贴一部分内容出来。
ZGC源码分析(4)-GC回收的10个步骤前面我们提到过GC的启动时机。这一节中主要介绍GC的步骤。一个GC周期被分成10个小步骤,分别为: 初始标记,该步骤从Root set出发找出活跃对象,并入栈;还不需要SWT...
@Pramyness 我不知道你说的引用标记位指的是哪一块内容。主要是引用这个词在JVM中需要根据上下文理解。不知道你是想了解zgc如何使用color pointer处理并发?还是想了解垃圾回收过程中的标记阶段zgc如何使用位图记录对象的活跃情况(这里涉及到finalize的处理,所以标记位有特殊处理)?
ZGC源码分析(4)-GC回收的10个步骤前面我们提到过GC的启动时机。这一节中主要介绍GC的步骤。一个GC周期被分成10个小步骤,分别为: 初始标记,该步骤从Root set出发找出活跃对象,并入栈;还不需要SWT...
@Pramyness 其实这里有几个问题。就是为什么有3步需要STW?都解决的是什么问题,能不能优化?文章并没有指出,我正在写一本关于ZGC设计和实现的书,里面有一章会对整个过程做详细的解释。
ZGC源码分析(4)-GC回收的10个步骤前面我们提到过GC的启动时机。这一节中主要介绍GC的步骤。一个GC周期被分成10个小步骤,分别为: 初始标记,该步骤从Root set出发找出活跃对象,并入栈;还不需要SWT...
@Pramyness 不好意思,打错了。是“该步需要STW”
ZGC源码分析(4)-GC回收的10个步骤前面我们提到过GC的启动时机。这一节中主要介绍GC的步骤。一个GC周期被分成10个小步骤,分别为: 初始标记,该步骤从Root set出发找出活跃对象,并入栈;还不需要SWT...
根据ZGC运行的情况,截取部分关键的日志信息。分析如下: ZGC初始化信息 这一部分主要是ZGC初始化的状态。从日志我们看出JVM的版本,是否支持NUMA,大爷内存等。还有C...
ZGC的目标是希望更短的听段停顿时间,同时希望对应用程序的影响尽量小。所以一定会控制GC并行线程数和并发线程数。并行线程指的是暂停应用执行初始标记,最终标记和初始转移时候的工...
前面我们提到过GC的启动时机。这一节中主要介绍GC的步骤。一个GC周期被分成10个小步骤,分别为: 初始标记,该步骤从Root set出发找出活跃对象,并入栈;还不需要SWT...
ZGC为了支持TB级内存,设计了分页管理(类似于G1的分区);为了能够快速的进行并发标记和并发移动,对内存空间重新进行了划分,这就是Color Pointers,同时设计了物...
ZGC以被动回收为主,即由后台线程控制何时启动垃圾回收。 ZGC的触发时机在 jdk11/src/hotspot/share/gc/z/zDirector.cpp ZDire...
最新的JDK 11在2018年9月25号正式发布,这这一版本中有不少新的特性,但是最令人关注的是JDK 11中的新款的垃圾回收器ZGC虽然它被明确地标记为实验性质(意味着还不...