pull/10/head
yuanguangxin 4 years ago
parent ae30f6fa6c
commit b502118833

@ -382,7 +382,7 @@ JVM引入动态年龄计算主要基于如下两点考虑
1. 标记阶段:首先是初始标记(Initial-Mark),这个阶段也是停顿的(stop-the-word)并且会稍带触发一次yong GC。
2. 并发标记这个过程在整个堆中进行并且和应用程序并发运行。并发标记过程可能被yong GC中断。在并发标记阶段如果发现区域对象中的所有对象都是垃圾那个这个区域会被立即回收(图中打X)。同时,并发标记过程中,每个区域的对象活性(区域中存活对象的比例)被计算。
3. 再标记这个阶段是用来补充收集并发标记阶段产新的新垃圾。与之不同的是G1中采用了更快的算法:SATB。
4. 清理阶段:选择活性低的区域(同时考虑停顿时间)等待下次yong GC一起收集对应GC log: [GC pause (mixed)]这个过程也会有停顿(STW)。
4. 清理阶段:选择活性低的区域(同时考虑停顿时间)等待下次yong GC一起收集这个过程也会有停顿(STW)。
5. 回收/完成新的yong GC清理被计算好的区域。但是有一些区域还是可能存在垃圾对象可能是这些区域中对象活性较高回收不划算也肯能是为了迎合用户设置的时间不得不舍弃一些区域的收集。
### G1和CMS的比较

Loading…
Cancel
Save