G1GC
2021-08-19 19:09:23 7 举报
AI智能生成
登录查看完整内容
G1GC的读书笔记。
作者其他创作
大纲/内容
深入Java虚拟机:JVM G1GC的算法与实现
1. 并发标记
并发标记线程
位图的概念
每个区域两个位图
next
本次的标记
next_marked_bytes
prev
上次的标记
prev_marked_bytes
过程
1. 初始标记阶段
pause
分支主题
1. 创建标记位图next
2. 根扫描
2. 并发标记阶段
SATB
snapshot at the beginning
对象间引用关系的变化
SATB写屏障
SATB本地队列
(全局)SATB队列集合
3. 最终标记阶段
扫描残留的SATB本地队列
4. 存活对象计数
5. 收尾工作
next->prev
计算转移效率
输出
标记位图prev
存活对象字节数prev_marked_bytes
2. 转移
转移专用记忆集合
记录区域之间的引用关系
待转移对象所在区域内的对象被其他区域引用的情况
卡表
1B->512B
转移专用写屏障
1. 比较对象地址
2. to_dirty
3. enqueue
转移专用记忆集合线程
1. 取出日志
2. 变为净卡片
3. 检查卡片对应的对象的域
4. 往域中地址对应的记忆集合添加卡片
目的: 将A引用B的日志转化为B被A引用的记录.
热卡片
转移过程
1. 选择回收集合
2. 根转移
1. 根直接引用的对象
2. 并发标记处理中的对象
3. 其他区域对象直接引用的回收集合内的对象
3. 转移
4. 软实时性
3个参数
1. 可用内存上限
2. GC暂停时间上限
3. GC单位时间
5. 分代G1GC
0 条评论
回复 删除
下一页