gpt4 book ai didi

java - 需要帮助来理解可用的 JVM "Garbage Collection Algorithm"和 "Garbage Collector"

转载 作者:行者123 更新时间:2023-12-03 23:02:41 27 4
gpt4 key购买 nike

我正在浏览链接 Java - available garbage collection algorithms了解可用的 JVM 垃圾收集算法并感到困惑。

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

现在请帮我理解下面是算法还是算法的实现:

  1. 连续剧,
  2. 并行,
  3. 内容管理系统,
  4. G1,

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

我还阅读了发表在 http://www.oracle.com/technetwork/java/javase/tech/memorymanagement-whitepaper-1-150020.pdf 上的白皮书关于 JVM 垃圾收集,但无法明确垃圾收集算法和垃圾收集器之间的区别。

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

Serial Garbage Collector(垃圾收集器的一种)是指使用“新生代垃圾收集算法”和“老年代垃圾收集算法”分别对新生代和老年代区域进行GC。

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

最佳答案

嗯,让我试着解释一下 :)

垃圾收集器可以有不同的算法——例如 Mark&Sweep、Mark&Compact、Reference Counting 等——(通常取决于系统的性能以及应用程序的范围)。应用程序在堆上创建对象。由于这些对象中的大多数都在年轻时死亡,因此堆将分为两个主要区域:年轻一代和老一代。对象总是先落在年轻一代中。在那里你有算法,然后将一些对象提升到老年代。因为处理老年代的对象通常需要大量的性能,所以目标是让对象尽可能早的死掉。(这是非常基本的解释 - 新生代也分为 Eden 和 Survivor Space - 所以我试着给出一个简单的概述)。

所以垃圾收集器对不同的世代(年轻的和年老的)使用不同的算法。此外,您不仅可以通过算法来区分,还可以通过它们的执行方式来区分:串行、并行、并发...等

序列号

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

并行

垃圾收集器以并行模式运行。这种模式利用了多核系统的优势。所以清理堆的任务是在线程中运行的。这样垃圾收集器需要更少的时间来清理堆。但是你仍然会有 stw-phases,但它们花费的时间更少。

CMS - 并发

这个垃圾收集器以并发模式运行。所以在垃圾收集器的某些阶段,任务紧接着应用程序运行。例如并发标记和清除:

初始标记阶段 - 连续

标记阶段 - 并发

备注阶段 - 并行

扫描阶段 - 并发

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

G1

是SUN(还是IBM?)开发的一种特殊的垃圾收集器。目前所有算法都有 Stop-The-World - Phases。对于 G1,他们试图说明这些阶段需要多长时间。这是一个非常复杂的算法,但也无法确定 stw 阶段需要多长时间。

关于java - 需要帮助来理解可用的 JVM "Garbage Collection Algorithm"和 "Garbage Collector",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29363689/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com