Generational GC如何运作?
什么是Generational GC?
感谢
答案 0 :(得分:3)
简单地说,分代收集器管理一系列寿命越来越长的对象的内存。这些区域称为代。最年轻的一代 - 有时称为 Eden生成 - 由刚刚创建的对象组成。它往往会看到一个很多的变化 - 对象来自这一代的所有时间。老一辈人的变化要少得多。那是因为物体持续的时间越长,持续持续的可能性就越大。
分代收集器通过以这种方式划分内存来提高效率,因为它可以将大部分时间用于查看小型Eden代,并且它可以在大多数时间内忽略最老的代。通过限制需要查看的内存量,收集器减少了它需要做的工作量。
答案 1 :(得分:1)
世代GC(也称为 短暂的GC)将对象划分为 几代人,在大多数周期,都会 只放置子集的对象 几代人进入初始白人 (谴责)集。而且, 运行时系统维护知识 当引用跨代时 观察创作和覆盖 参考文献。当垃圾 收集器运行,它可能能够使用 这些知识证明了一些 初始白色集中的对象是 无法穿越而无法到达 整个参考树。如果 世代假说认为,这 结果更快收集 循环,同时仍然回收最多 无法到达的物体。
基本上,这是一种启发式方法。垃圾收集将新创建的对象放入内存区域(称为白色集),当此集合已满时,仍然引用的对象将移动到另一个区域,并清除并填充白色集用新鲜的新物品。白色集是假设,那里发现的物体通常是无法到达的。
有关Garbage Collection的JVM微调的进一步阅读。