在前几次中已经对G1的理论进行了一个比较详细的了解了,对于G1垃圾收集器最权威的解读肯定得上官网,当咱们将官网的理解透了,那基本上网上对于G1的说明其实最终都是来自于官网,所以接下来会详细来解读Oracle官网对于G1垃圾收集器的权威说明,其网址为:“https://www.oracle.com/technetwork/tutorials/tutorials-1876574.html”,打开如下:

G1垃圾收集器官方文档透彻解读【官方解读】-LMLPHP

先来解读一下大纲:

G1垃圾收集器官方文档透彻解读【官方解读】-LMLPHP

好,接下来开启第一小节的解读“Overview”,由于是概览,所以比较简单,大概了解下既可。

好,第一部分的一带而过了,了解既可,接下来看第二节“Java Technology and the JVM”,如下:

好,接下来关注下一小节“The G1 Garbage Collector”,这里先只分析一小部分,剩下的待下次再继续解读:

该图也是在之前学习过了,回忆下:

G1垃圾收集器官方文档透彻解读【官方解读】-LMLPHP

The heap is partitioned into a set of equal-sized heap regions, each a contiguous range of virtual memory. Certain region sets are assigned the same roles (eden, survivor, old) as in the older collectors, but there is not a fixed size for them. This provides greater flexibility in memory usage.

解读:

“The heap is partitioned into a set of equal-sized heap regions, each a contiguous range of virtual memory. ”

这个堆被划分了一组相等大小堆区域,每一个区域都是连续虚拟内存的地址空间。

“Certain region sets are assigned the same roles (eden, survivor, old) as in the older collectors, but there is not a fixed size for them. ”

某些区域的集合会被分配成就像传统的收集器一样相同的角色(如eden、survivor、old),但是对于它们来说并没有指定一个固定的大小的空间。

“This provides greater flexibility in memory usage.”

这就提供了内存使用当中最大的灵活性。

FAQ:这句话是不是有点前后矛盾,如:

G1垃圾收集器官方文档透彻解读【官方解读】-LMLPHP

其实是这样的:“equal-sized heap regions”是指图中的小方格,这是固定大小的:

G1垃圾收集器官方文档透彻解读【官方解读】-LMLPHP

而“but there is not a fixed size ”是指的比如Eden空间一定得要占10M,Survivor一定是要占3M,Old一定得要占100M,有可能Eden过一段时间占8M,也有可能是占10M,也有可能占3M,指的是针对每一个角色所占用的大小。

05-11 18:27