当前位置: 首页 > 知识库问答 >
问题:

理解GC G1——并发标记阶段

姜宏放
2023-03-14

我想了解一些关于GC G1的事情,希望你们能帮助我。

  1. 整个并发标记阶段在GC G1中的作用到底是什么?我是说所有部分(初始标记、根区域扫描、...、清理)。

据我所知,它的作用是标记所有可从根区域到达的活动对象(在并发标记阶段,根区域是在“初始标记”部分中选择的幸存者区域),并估计旧区域的活动性(基于此,它们将被选择为混合疏散暂停的集合集)。我说得对吗?

如果我理解正确,混合疏散暂停标记并删除GC根和记忆集无法访问的对象。并发标记标记的是不同的对象集,因此这些对象可能会重叠,但它们不必重叠。我说得对吗?

GC根到底是什么?年轻人和混血儿的情况是否相同(除了混血儿收藏中记忆集的参考文献)?

我下面的总结正确吗?

完全年轻的收集标记来自伊甸园和幸存者区域的所有活体(这意味着GC根可以到达),并将它们疏散(复制)到新的幸存者(或旧的)区域。其余的对象被视为垃圾并被移除。自由区被收回。

开始时的并发标记阶段标记所有可能引用旧区域(基于记忆集?)的幸存者区域。幸存者区域在这里被视为GC根,因为这部分发生在完全年轻的收集过程中,所以我们确信其中的所有对象都存在。然后GC遍历对象图(从选定幸存者区域的对象开始),并标记所有活动对象。

在混合疏散暂停中,基于活跃度统计(前一阶段统计),选择一些旧区域进行集合。然后将选定区域中的所有活动对象疏散(复制)到新区域(活动意味着:a.在并发标记期间选择,b.在标准疏散暂停中选择-可从GC根和记忆集访问)。其余的对象将作为垃圾移除,区域将被回收。

共有1个答案

傅博瀚
2023-03-14
  1. 在GC G1中,整个并发标记阶段的作用到底是什么?我指的是所有部分(初始标记、根区域扫描、清理)

标记阶段的作用是从根开始,向下遍历到根的所有连通分支,并活标记它们。

“并发”仅仅意味着这是在多个根上并发完成的。

没有。

目标是只标记活的物体。任何没有标记活的东西,都会自动(正确地)假定死亡。

本文链接了另一个SO问题,列出了以下四种类型的GC根:

  1. 局部变量;
  2. 活动线程;
  3. 静态变量;并且,
  4. JNI引用。

根的定义与集合集无关。根是任何GC生成或集合中的根。

这是四个问题中最难的一个。请允许我跳过这一步。:)

 类似资料:
  • 如果属性被配置为并发标记,则 EF 会在将记录变更保存到数据库时制止其他用户修改该属性的数据库值。EF 使用的是乐观并发模式,就是说它会假设值没有发生变更,并尝试将它保存到数据库,但是如果它发现值已经发生变更,则抛出异常。 比如我们可能想要将 Person 实体上的 LastName 配置为并发标记。这意味着如果一个用户尝试将变更保存到 Person,但另一个用户已经更改了 LastName,那么

  • 我正在阅读XML并解析它,希望更新XML中的所有锚标记:在上面的例子中,我希望在一个标记中附加域名。如果href属性不是以HTTPS、HTTP或www开头。我想将基URL追加到href属性。 怎么做?

  • 我实际上正在用Java开发一个文本解析器,有人要求我通过用它解析HTML来增强它。解析器的目的是将被解析的文件分成另外三个文件,一个包含文件中包含的所有单词,一个包括所有句子,另一个包含所有问题。 *.txt部分工作得很好,但我在解析HTML时遇到了一个问题。 我创建了一个扩展名为*.txt的临时文件,并将其在我的文本解析器中传递,但是如果我传递一个带有HTML文件链接的URL,其格式如下所示:

  • 问题内容: 我想删除标签之间的所有内容。输入示例可能是 输入: 输出将是: 基本上,我必须先删除整个区块 谢谢, 问题答案: 您最好对找到的 所有 元素进行迭代。所以你可以保证 a。)所有元素都被删除并且 b。)如果没有元素,那么什么也做不了。 例: 编辑: (除了我的评论) 当简单的 null /范围检查 在这里足够时,请不要使用异常处理: 代替:

  • 本文向大家介绍写一个react的高阶组件并说明你对高阶组件的理解相关面试题,主要包含被问及写一个react的高阶组件并说明你对高阶组件的理解时的应答技巧和注意事项,需要的朋友参考一下 定义高阶组件 import React, { Component } from 'react'; const simpleHoc = WrappedComponent => { console.log('simple

  • 我想用谷歌标签管理器执行触发事件。 我有一个这样的链接: 如何让谷歌标签管理器触发"唯一类"和"非唯一类"? 为了让事情更清楚,我在下面添加了一些文字: 代码如下: 在预览模式下,当我在跨度元素上计时时,我会得到以下变量: _事件- 当我单击a链接元素时,我得到以下变量-Variable- 你好,约翰