每日一博 | G1 垃圾收集器是如何对待我们 JVM
什么是 G1 收集器 G1 收集器是一款面向服务器端应用的垃圾收集器,它既可以用在新生代,也可以用在老年代。G1 是 Hotspot JDK1.7 后提供的面向大内存(Heap 区数 G 到数 10G )、多核系统的收集器,能够实现软停顿目标收集并且具有高吞吐量,具有更可预测的停顿时间。 G1 是一种并发、并行、部分 Stop The World、使用复制算法收集的分代的增量式收集器,G1 的全堆的操作,像global marking,是和应用(mutator)并发执行的,这样可以减少对 mutator 的暂停时间。清除阶段则使用多线程来提高吞吐量。 与 Hotspot 之前的 Serial、Parallel、CMS 等收集器不同的是,G1将堆分为很多大小相等的Region, 每次收集时会判断各Region 的活性,即垃圾对象的占比,垃圾对象占比越多的 Region,回收的收益越大,然后G1会按照设置的停顿时间目标、前几次回收 Region 所用时间来估算要回收哪些Region,即用最小的时间获取最大的收益,这也是 Garbage First 名字的含义。 Garbage First ...




