首页 > 其他分享 >三色法GC总结

三色法GC总结

时间:2024-08-07 13:39:32浏览次数:11  
标签:总结 色法 黑色 白色 对象 扫描 GC 引用 class

作用:因并发标记过程中,程序还在跑。对象间的引用会发生变化,可能会导致漏标或错标情况。因此采用三色法,将扫描的各情况用颜色区别出来。

三种颜色

白色:一开始所有对象的颜色都是白色,即未扫描过的对象。

灰色:表示对象已经扫描到了,但是对象所在的引用对象,还未全部扫描完成。

黑色:表示当前对象自身以及引用对象都已扫描,标记为黑色。

备注:黑色对象不能直接指向白色对象,不经过黑色对象。

 

代码示例:

class A {
B b = new B();
D d = null;
}

class B {
C c = new C();
D d = new D();
}

class C {

}

class D {

}
以下为三色关系图

浮动垃圾:并发清除阶段,因程序没有暂停运行(考虑停顿时间),标记与用户线程交错的执行。导致产生了多余垃圾,需要下一次扫描才可通过垃圾回收清除。

 

漏标:会导致对象被当成垃圾误回收。所以此情况不允许发生

解决方案:

增量更新:当黑色对象突然引用白色对象时,黑色对象所指向白色对象需要变更为灰色对象。(待并发扫描结束后,在从黑色对象为根在扫描一次即可)

原始快照:灰色对象要删除白色对象的引用时,将要删除的引用记录下来,并发扫描结束后。再从引用关系为灰色对象扫描一下即可。

 

标签:总结,色法,黑色,白色,对象,扫描,GC,引用,class
From: https://www.cnblogs.com/jichenghui/p/18346858

相关文章

  • 华为云全域Serverless技术创新:全球首创通用Serverless平台被ACM SIGCOMM录用
    摘要:该平台提供通用函数编程模型,高可扩缩、高性能和高效对接后端服务的运行框架,助力华为云构建全域Serverless云服务。华为开发者大会2024(HDC2024)在东莞·松山湖圆满结束,期间华为云主办的“全域Serverless时代:技术创新引领,赋能行业实践”专题论坛,向广大开发者传递了Serverless领......
  • CompletableFuture实践总结
    第1章:引言在Java传统的Future模式里,咱们都知道,一旦开始了一个异步操作,就只能等它结束,无法知道执行情况,也不能手动完成或者取消。而CompletableFuture呢,就像它的名字一样,是可以"完全控制"的Future。它提供了更多的控制,比如可以手动完成,可以处理异常,还可以把多个Future组合起来,进......
  • USB基础知识总结
    USB基础知识总结USB基本概念介绍USB(UniversalSerialBus,通用串行总线)是1995年英特尔和微软等公司联合倡导发起的一种新的**PC串行通信协议。它基于通用连接技术,实现外设的简单快速连接,达到方便用户、降低成本、扩展PC连接外设范围的目的。其最大特点是支持热插拔和即插......
  • 如何在 Python 中使用 Langchain 返回已使用的上下文以进行回答
    我已经构建了一个像这样的RAG系统:defformat_docs(docs):return"\n\n".join(doc.page_contentfordocindocs)response_schemas=[ResponseSchema(name="price",description="Price",type="float"),ResponseSchema(......
  • ARC181总结
    ARC181总结ARC还是太难了A标签:有脑子......
  • LangChain与JWT:构建安全认证的桥梁
    LangChain与JWT:构建安全认证的桥梁在现代Web应用和微服务架构中,安全认证是保护数据和资源访问的关键。JSONWebTokens(JWT)作为一种广泛使用的开放标准,为安全传输提供了一种简洁而自包含的方式。LangChain,作为一个假设的编程辅助工具,如果存在,它可能会支持JWT,以增强其在安全......
  • LangChain与CI/CD的无缝对接:自动化部署的新前沿
    LangChain与CI/CD的无缝对接:自动化部署的新前沿在当今快速发展的软件开发领域,持续集成/持续部署(CI/CD)已成为提升开发效率和软件质量的关键实践。LangChain,作为一个假设的编程辅助工具,如果存在,它可能会与CI/CD流程紧密集成,以实现代码生成、测试和部署的自动化。本文将探讨La......
  • 代码随想录算法训练营第七天|454.四数相加II,383. 赎金信,15. 三数之和,18. 四数之和,总结
    力扣题部分:454.四数相加II题目链接:.-力扣(LeetCode) ​​​​​思路(map哈希表):    将数组分为两组分别用双重for循环遍历。第一组将来自不同数组的两个数之和(记为sum1)作为map的key,两个数之和出现的次数作为map的value,第二组通过在map查询来自不同数组的两......
  • LangChain与CI工具的完美融合:自动化开发的新篇章
    LangChain与CI工具的完美融合:自动化开发的新篇章在软件开发的快速迭代中,持续集成(CI)已成为提升开发效率和保证代码质量的关键实践。LangChain作为一个先进的编程辅助工具,它的集成到各种CI工具中,为开发者提供了无缝的代码生成和测试流程。本文将深入探讨LangChain支持的CI工......
  • 基于tcp,html,数据库的在线信息查询系统项目总结
    1.项目背景在线信息查询系统是一种可用于检索和展示各种信息的计算机程序或平台。主要特点包括:用户接口:通常提供友好的界面,用户可以方便地输入查询条件。数据存储:系统往往连接到数据库,存储大量信息,以供查询和分析。搜索功能:支持关键词搜索、筛选和分类功能,帮助用户快速找到......