首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要帮助理解可用JVM“垃圾收集算法”和“垃圾收集器”

需要帮助理解可用JVM“垃圾收集算法”和“垃圾收集器”
EN

Stack Overflow用户
提问于 2015-03-31 08:09:49
回答 2查看 2.1K关注 0票数 2

我通过链接Java可用的垃圾收集算法来理解可用的JVM垃圾收集算法,结果搞糊涂了。

根据我的理解,会有一些标准的GC算法,不同的JVM供应商实现这些算法来创建垃圾收集器。

现在请帮助我理解以下是算法还是实现算法:

  1. 连续的,
  2. 平行,
  3. CMS,
  4. G1,

我认为这些是垃圾收集器的类型,它实现了一些特定的算法(我不知道的算法名称)。

另外,我正在阅读在http://www.oracle.com/technetwork/java/javase/tech/memorymanagement-whitepaper-1-150020.pdf上发布的关于JVM垃圾收集的白皮书,但是无法明确区分垃圾收集算法和垃圾收集器。

其中一些文档提到了“年轻一代垃圾收集算法/老一代垃圾收集算法”。

这是否意味着串行垃圾收集器(垃圾收集器的类型)分别使用“年轻一代垃圾收集算法”和“老一代垃圾收集算法”分别对年轻一代和老一代地区进行GC。

请帮助我清楚地了解算法的类型和垃圾收集器的类型。

EN

回答 2

Stack Overflow用户

发布于 2015-03-31 11:53:36

让我试着解释一下:)

垃圾收集器可以有不同的算法--比如标记和扫描、Mark&等等(通常取决于系统的性能以及应用程序的范围)。应用程序在堆上创建对象。由于这些对象中的大多数都是年轻的,堆将被划分为两个主要区域:年轻一代和老一代。物体总是在年轻的基因中首先着陆。这里有算法,然后将一些对象推广到老一代。因为在老一代中处理对象通常需要很高的性能,所以目标是让对象尽可能早地死去。(这是非常基本的解释-年轻的基因也被分为伊甸园和幸存者空间,所以我试着给出一个简单的概述)。

因此垃圾收集器对不同的基因(年轻人和老年人)使用不同的算法。此外,您不仅要通过算法来分离,还要根据它们的执行方式:串行、并行、Concurrent...etc。

串行

表示垃圾收集器在串行模式下运行。串行模式将被使用,如果你只有在核心。如果使用串行,垃圾收集器将停止世界(stw阶段)并清除堆上的对象。这会降低应用程序的性能。

并行

垃圾收集器以并行模式运行。这种模式利用了多核系统的优点。因此,清理堆的任务在线程中运行。这样,垃圾收集器需要较少的时间来清除堆。但你仍然会有stw阶段,但他们需要较少的时间。

CMS -并发

此垃圾收集器以并发模式运行。因此,在垃圾收集器的某些阶段,任务在应用程序旁边运行。例如,并发Mark & Swepp:

初始标记阶段-系列

标记阶段-并发

备注相位并行

扫描相位-并发

在并发阶段,您将不会有STW阶段。

G1

是SUN开发的一个特殊的垃圾收集器(还是IBM开发的)。目前所有算法都有停止世界阶段.对于G1,他们试图说明这些阶段需要多长时间。这是一个非常复杂的算法,但也是如此,不可能说stw阶段将需要多长时间。

票数 4
EN

Stack Overflow用户

发布于 2015-03-31 17:41:09

我认为这些是垃圾收集器的类型,它实现了一些特定的算法(我不知道的算法名称)。

您列出的内容通常用作Oracle上下文中特定GC实现的名称,其中包含所有特定于实现的详细信息、调优选项等,以及它们带来的其他实际异常。当然,它们也是基于抽象的算法,这些算法可以共享它们的名称,也可以在一些科学出版物中描述,这些算法可以修饰细节,只是对它们的理论行为进行建模。

两者的区别并不总是那么清晰。串行GC是最原始的算法:标记扫描,停止世界,单线程.取决于JVM,它可能是压缩的,也可能不是压缩的。如果我没记错的话,旧版本的android在串行GC实现中没有紧凑。

所以,实际上,命名是特定于上下文的。如果您正在阅读一篇关于并行、紧凑、并发的、无用的收集器的研究论文,它并不是指hotspot的吞吐量(并行老gen)、并行清道夫(并行年轻一代)或parnew (年轻一代的收集器与CMS合作的老一代)收集器,仅仅因为提到了并行这个词。如果您阅读,可能是一篇博客文章,描述了特定GC的性能特征,以及实际的度量--它们可能引用hotspot实现。

这里列出了hotspot的收藏家及其关系,可能因待决JEPs而发生更改

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

https://stackoverflow.com/questions/29363689

复制
相关文章

相似问题

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