Generational Garbage Collection如何运作?

时间:2011-03-30 17:21:20

标签: java garbage-collection

Generational GC如何运作?
什么是Generational GC?

感谢

2 个答案:

答案 0 :(得分:3)

简单地说,分代收集器管理一系列寿命越来越长的对象的内存。这些区域称为。最年轻的一代 - 有时称为 Eden生成 - 由刚刚创建的对象组成。它往往会看到一个很多的变化 - 对象来自这一代的所有时间。老一辈人的变化要少得多。那是因为物体持续的时间越长,持续持续的可能性就越大。

分代收集器通过以这种方式划分内存来提高效率,因为它可以将大部分时间用于查看小型Eden代,并且它可以在大多数时间内忽略最老的代。通过限制需要查看的内存量,收集器减少了它需要做的工作量。

答案 1 :(得分:1)

Wikipedia's explanation

  

世代GC(也称为   短暂的GC)将对象划分为   几代人,在大多数周期,都会   只放置子集的对象   几代人进入初始白人   (谴责)集。而且,   运行时系统维护知识   当引用跨代时   观察创作和覆盖   参考文献。当垃圾   收集器运行,它可能能够使用   这些知识证明了一些   初始白色集中的对象是   无法穿越而无法到达   整个参考树。如果   世代假说认为,这   结果更快收集   循环,同时仍然回收最多   无法到达的物体。

基本上,这是一种启发式方法。垃圾收集将新创建的对象放入内存区域(称为白色集),当此集合已满时,仍然引用的对象将移动到另一个区域,并清除并填充白色集用新鲜的新物品。白色集是假设,那里发现的物体通常是无法到达的。

有关Garbage Collection的JVM微调的进一步阅读。