首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >垃圾优先垃圾收集器是如何工作的?

垃圾优先垃圾收集器是如何工作的?
EN

Stack Overflow用户
提问于 2010-05-21 20:02:31
回答 3查看 16.6K关注 0票数 46

有人能解释一下G1垃圾收集器是如何工作的吗?到目前为止,我还找不到任何全面、易于理解的描述。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2010-05-21 20:46:36

收集器将堆拆分为固定大小的区域,并跟踪这些区域中的实时数据。它保留了一组指针--“记忆集”--进出该区域。当GC被认为是必要的时,它会首先收集活动数据较少的区域(因此,“垃圾优先”)。通常,这可能意味着在一个步骤中收集整个区域:如果指向区域的指针数量为零,则不需要对该区域进行标记或扫描。

对于每个地区,它跟踪各种指标,这些指标描述了收集这些数据需要多长时间。您可以给它一个关于暂停时间的软实时约束,然后它会尝试在该约束时间内尽可能多地收集垃圾。

有关于G1的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
票数 45
EN

Stack Overflow用户

发布于 2013-10-11 02:33:40

在这个新的JavaOne 2012会话中,G1也得到了很好的解释:G1垃圾收集器性能调整 [youtube],[PDF]。

首先介绍了内容管理系统和G1,并对它们进行了比较,然后说明了G1的分析和调整。

G1特性

  • Fixed大小区域-堆分为多个区域(1Mb - 32MB,约2000,由VM决定)。表示为regions.
  • Live对象的逻辑集的
  • Eden、survivor和OldGen已从一个区域疏散到另一个区域

典型的G1堆可能如下所示:

以下是每个G1阶段的摘要:

1. Young集合

1.1 初级阶段-次要GC

(promotion).

  • Accounting -下一个年轻GC的伊甸园/幸存者空间的大小是基于每个区域的统计数据和应用程序设置的暂停时间目标来确定的。
  • Evacuation -Stop- the World并行小GC,其中活动对象从年轻一代疏散到幸存者区域(租期)或OldGen区域(promotion).
  • Accounting-下一个年轻GC的伊甸园/幸存者空间的大小是基于应用程序设置的暂停时间目标确定的。G1估计下一次YoungGC.
  • Resizing需要多少时间- G1现在可以轻松地缩小/调整伊甸园/幸存者区域的大小。

1.2 年轻/初始标记

  • GC年轻的初始标记是OldGen集合的初始标记阶段,它与YoungGC集合并行执行。初始标记是一个并行的并发标记过程。

2.老一代收藏

2.1 初始标记-参见1.2。

2.2 GC备注

一次停止-世界暂停,并发标记实时objects

  • accounting -对于每个区域,在备注期间,G1正在跟踪该区域的活动状态(每个区域中有多少个对象存在),以及对该区域的引用(
  • G1 )-这将告诉G1在此区域回收的

上执行收集需要多长时间

2.3。GC暂停(混合)

  • 选择低liviness的区域,并收集其中的一些区域。因此,我们正在收集“垃圾优先”。
  • 这些区域的实际收集是与下一个年轻GC同时执行的,因此对于OldGen的收集没有单独的暂停。因此,GC暂停(混合)是YoungGen和旧gen的一部分的混合收集。
  • 在GC pause (混合)的末尾可能会有一些垃圾留在旧gen区域中,这将在以后根据未来的生命度、暂停时间目标和未使用区域的数量进行收集。

3.完全GC

请注意,G1旨在尽可能避免完整的GC。从Java7u40开始,G1中的FullGC暂停没有经过优化,而是作为单线程操作实现的。在使用G1时,尽量避免完全GC -如果您看到任何FullGC暂停,您的GC设置可能需要一些调整。

资源

  • G1: One Garbage Collector To Rule Them All
  • JavaOne 2012 session:[PDF]
  • Garbage Collection in Java (4) - Garbage First
  • Garbage-First Garbage CollectionG1垃圾收集器性能调整 [youtube],原文。
票数 35
EN

Stack Overflow用户

发布于 2018-01-20 06:39:43

我发现这篇文章中的Oracle's page在以一种容易理解的方式解释概念方面非常有帮助,而且不会太长。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2881827

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档