收集器将堆分成固定大小的区域,并跟踪这些区域中的实时数据。它将一组指针(“记住的集”)保留在区域内和区域外。当认为有必要使用GC时,它将首先收集实时数据较少的区域(因此,“垃圾优先”)。通常,这意味着一步就可以收集整个区域:如果进入一个区域的指针数量为零,则无需对该区域进行标记或扫描。
对于每个区域,它都会跟踪各种指标,这些指标描述了收集这些指标所需的时间。您可以给它一个关于暂停时间的软实时约束,然后它尝试在该约束时间内收集尽可能多的垃圾。
关于Java的JavaOne讨论以及关于该主题的几篇文章:
- http://developers.sun.com/learning/javaoneonline/j1sessn.jsp
- http://www.fasterj.com/articles/G1.shtml
- http://www.drdobbs.com/java/219401061
- http://www.infoq.com/articles/G1-One-Garbage-Collector-To-Rule-Them-All



