G1
- JDK 7u4发行版时被正式推出
- jdk11 默认GC是G1
- 区域:新生代和老年代
- 优点:使用标记整理算法,不会产生空间碎片
- 目标:适应现在不断扩大的内存和不断增加的处理器数量,进一步降低暂停时间,同时兼顾良好的吞吐量
- soft real-time(软实时)见下
- Region-card(内存模型)见下
- 分代收集算法见下
- 三色标记法见下
- 过程见下
soft real-time(软实时)
- 实时垃圾回收,是指必须在要求的时间内完成垃圾回收
- 软实时垃圾回收,是指尽量在要求的时间内完成垃圾回收
Region-card(内存模型)
- Region:将整个堆空间分成若干个大小相等的内存区域
- card:每个Region内部又被分成了若干个大小为512 Byte卡片(Card)。全局卡片表(Global Card Table)记录了所有Region的所有card。对象的分配和回收都是针对若干个card进行处理的。
分代收集
- 在Region-card内存模型下建立的新生代,老年代,新生代包括伊甸区和幸存区。
三色标记法
- 黑白灰三种颜色标记对象
- 白色是未标记
- 灰色自身被标记,引用的对象未标记
- 黑色自身与引用对象都已标记
jdk11
# 打印所有的默认参数设置
java -XX:+PrintCommandLineFlags -version
-XX:G1ConcRefinementThreads=4
-XX:GCDrainStackTargetSize=64
-XX:InitialHeapSize=400996800
-XX:MaxHeapSize=6415948800
-XX:+PrintCommandLineFlags
-XX:ReservedCodeCacheSize=251658240
-XX:+SegmentedCodeCache
-XX:+UseCompressedClassPointers
-XX:+UseCompressedOops
-XX:+UseG1GC
-XX:-UseLargePagesIndividualAllocation