![]() |
1
39
收集器将堆拆分为固定大小的区域,并跟踪这些区域中的活动数据。它保留了一组“记忆集”进出该区域的指针。当GC被认为是必要的时,它首先收集活动数据较少的区域(因此称为“垃圾优先”)。通常,这意味着只需一步就可以收集整个区域:如果指向某个区域的指针数为零,则不需要对该区域进行标记或扫描。 对于每个区域,它跟踪描述收集它们需要多长时间的各种度量。您可以给它一个关于暂停时间的软实时约束,然后它尝试在该约束时间内收集尽可能多的垃圾。 JavaOne谈到了g1,关于这个主题的文章很少: |
![]() |
2
28
在这个新的JavaOne 2012会话中,g1也得到了很好的解释: g1垃圾收集器性能调优= [ youtu be=>a>],[ pdf ]。 他们从介绍CMS和G1开始,并对它们进行比较,然后解释G1分析和调整。 G1特性
一个典型的g1堆可能看起来像:
以下是每个G1阶段的摘要: 1。年轻收藏1.1 young phase-minor gc
1.2 young/initial mark
2。老一代收藏2.1 初始标记 -参见1.2。 2.2 gc remark
2.3。 gc pause(mixed)
3。完全GC/< H2>请注意,g1旨在尽可能避免完全gc。至于Java7U40,G1中的PultGC停顿没有优化,并被实现为单线程操作。使用g1时,尽量避免使用完全gc—如果看到任何完全gc暂停,则gc设置可能需要进行一些调整。 资源
他们从介绍CMS和G1开始,并对它们进行比较,然后解释G1分析和调整。 G1特性
典型的g1堆可能看起来像:
以下是每个G1阶段的摘要: 1。年轻收藏一点一 年轻阶段-轻微GC
一点二 年轻/初始标记
2。老一代收藏二点一 初始马克 见1.2。 二点二 气相色谱注释
2.3。 GC暂停(混合)
三。完整收集请注意,g1旨在尽可能避免完全gc。至于Java7U40,G1中的PultGC停顿没有优化,并被实现为单线程操作。使用g1时,尽量避免使用完全gc—如果看到任何完全gc暂停,则gc设置可能需要进行一些调整。 资源
|
![]() |
3
0
我发现 Oracle's page 在这一点上非常有助于以一种易于理解的方式解释概念,而不是太冗长。 |