首页 > 其他分享 >GC垃圾回收机制

GC垃圾回收机制

时间:2024-11-06 15:17:41浏览次数:3  
标签:标记 对象 回收 算法 GC 垃圾 内存

一、垃圾确定方式

1.引用计数法: 每次对象被引用时,该对象的计数器都会+1,取消引用     计数器就会-1,当堆中的对象没有引用次数时就会被确定为垃圾,但是如果对象之间存在交叉引用时就无法被认为是垃圾   

2.可达性分析法:  判断一个对象是否由从堆内到堆外的引用,没有则会被认为垃圾

二、垃圾回收算法

       了解了垃圾的确定方法后,我们将继续了解垃圾是怎么被回收的,即垃圾回收算法。在Java中主要有四中垃圾回收算法,分别是标记清除算法复制算法标记整理算法 和 分代收集算法

标记清除算法:当堆中的有效内存空间被耗尽的时候,就会暂停、挂起整个程序(也被称为stop the world),然后进行两项工作,第一项则是标记,第二项则是清除。

复制算法:将堆空间平均分为两份,在一份上存储,当这一块内存满后将其中存活的对象复制到另一块上去,然后把该内存中的垃圾对象清理掉

标记整理算法:结合了以上两个算法,为了避免缺陷而提出。标记阶段和标记清理算法相同,标记后不是清理对象,而是将存活对象移向内存的一端。然后清除端边界外的对象。

分代收集算法
在结合以上三种算法的综合分析及 JVM 内存对象生命周期的特点,诞生了一种新的垃圾回收算法——分代收集算法。其核心思想是根据对象存活的不同生命周期将内存划分为不同的域,一般情况下将 GC 堆划分为老年代。老年代的特点是每次垃圾回收时只有少量对象需要被回收,新生代的特点是每次垃圾回收时都有大量垃圾需要被回收,因此可以根据不同区域选择不同的算法。

三、垃圾回收器

       

1、串行垃圾回收器

串行:在一个线程内执行垃圾回收操作。

        新生代串行回收器 SerialGC:采用复制算法实现,单线程垃圾回收,独占式垃圾回收器

        老年代串行回收器 SerialOldGC:采用标记压缩算法,单线程独占式垃圾回收器

2、并行垃圾回收器

并行:在多个线程中执行垃圾回收操作。

        新生代 ParNew 回收器:采用复制算法实现,多线程回收器,独占式垃圾回收器。
        新生代 ParallelScavengeGC 回收器:采用复制算法多线程独占式回收器
        老年代 ParallelOldGC 回收器: 采用标记压缩算法,多线程独占式回收器

 3、并发垃圾回收器

  并发:在一个线程中执行任务的同时检测垃圾并回收

        CMS回收器:使用标记-清除算法的垃圾回收器。

        G1回收器:标记-清除收集器的长期替代品。

标签:标记,对象,回收,算法,GC,垃圾,内存
From: https://blog.csdn.net/2401_82985792/article/details/143469760

相关文章

  • 《JVM第8课》垃圾回收算法
    为什么要进行垃圾回收?垃圾是指JVM中没有任何引用指向它的对象,如果不及时清理这些垃圾对象,那么它就会一直占用内存,如果垃圾对象越来越多,就会出现OOM了。要判断对象是否是垃圾对象有两种方式,一、引用计数法。二、可达性分析法。而要清除垃圾对象有三种常用方式,一、标记-清除算......
  • 基于Java+SpringBoot+Vue+HTML5城市垃圾分类管理系统(源码+LW+调试文档+讲解等)/城市
    博主介绍......
  • Linux离线安装gcc4.8
    Linux离线安装gcc4.8https://pan.baidu.com/s/1J-wVsAoTmfn_iiOnYSrmZApwd:beeelinux离线安装gcc4.8.5(简单易懂,已成功安装)联网的情况下直接使用命令yum-yinstallgcc安装。不能联网就需要离线安装了。步骤如下:获取离线安装包:可以使用我已经下载好的包,链接:https://p......
  • QGC地面站软件配置保存功能
    文章目录前言一、涉及到的文件二、调用步骤三、成果展示前言QGC版本:4.1.1开发平台:Win11+QT5.15.2+VS2019原始代码:链接:https://pan.baidu.com/s/1H68Rz-4tO70-qI33HNU_bA?pwd=FYTf提取码:FYTf内容:QGC软件配置保存功能实现方法。用于二次开发中新添设置选项,针对......
  • 2025 - 全网最牛的生物信息学分析 - 一键式生成DIFF_GSEA_WGCNA_GO_KEGG_DO
    2025-全网最牛的生物信息学分析-一键式生成DIFF_GSEA_WGCNA_GO_KEGG_DO先给你炫一下图直接上代码setwd("/Users/wangyang/Desktop/BCBM/02DIFF_GSEA_WGCNA")#引用包library(ggplot2)library(limma)library(pheatmap)library(ggsci)library(dplyr)lappl......
  • 基于LLM Graph Transformer的知识图谱构建技术研究:LangChain框架下转换机制实践
    文本到图谱的转换是一个具有技术挑战性的研究领域,其核心任务是将非结构化文本数据转换为结构化的图谱表示。这种技术虽然由来已久,但随着大型语言模型(LLMs)的发展,其应用范围得到了显著扩展,并逐渐成为主流技术方案之一。上图展示了信息抽取过程中文本到知识图谱的转换。图左侧展......
  • 07LangChain实战课 - LLM模块使用与自定义模型调用
    LangChain实战课-LLM模块使用与自定义模型调用1.课程简介本节课聚焦于LangChain中的LLM(LargeLanguageModel)模块,探讨如何使用不同的大语言模型,包括开源模型和自定义模型。2.大语言模型的发展Transformer架构:Google在2018年提出的架构,是现代预训练模型的核心。基础......
  • 08LangChain实战课 - 输出解析器深入与Pydantic解析器实战
    LangChain实战课-输出解析器深入与Pydantic解析器实战1.课程回顾第5课中,我们学习了如何为花和价格生成吸引人的描述,并将这些描述和原因存储到CSV文件中。程序调用了OpenAI模型,并利用了结构化输出解析器以及数据处理和存储工具。2.LangChain中的输出解析器输出解析器......
  • 垃圾堆火焰烟雾检测系统
    垃圾堆火焰烟雾检测系统基于先进的图像处理技术,垃圾堆火焰烟雾检测系统通过现场已有的监控摄像头采集垃圾场现场视频。通过高效的图像处理算法,系统能够实时分析视频内容,准确识别出垃圾堆是否发生烟雾或火焰的存在。一旦发现异常情况,系统会自动发出警报,提醒管理人员及时处理,从而实......
  • EXGCD 和 EXCRT
    EXGCD和EXCRT前言我与这两个算法有很深的渊源。第一次遇到是三年前的五校联考,\(\text{t1}\)需要用到,于是我成了全场唯一一个没切\(\text{t1}\)的。第二次是两年前湖南省集,我依稀记得这是第二场的\(\text{Day1T2}\),我花了\(\text{2.5h}\)去推\(\text{exCRT}\)的式子......