`

GC的算法和种类

    博客分类:
  • jvm
 
阅读更多

Garbage Collection 垃圾收集,java中GC的对象是堆空间和永久区。

引用计数法:

当有其他对象引用当前对象的时候加1,引用消失的时候减1。为o的时候就GC。对象循环引用的时候比较难回收。

标记清除法:

分两个阶段,一个是标记阶段,一个是回收阶段。

从跟节点不可到达的对象标记为需要垃圾回收。

标记-压缩法:

移动存活对象,清理存活意外的对象。GC时分两个阶段,首先是把可触及的对象标记为存活对象,然后第二个阶段是移动存活对象到内存的一端,然后清除其他非存活对象。相比复制算法,标记压缩算法不需要两个内存空间。

复制算法:

不适合存活对象比较多的场合,将内存空间分为两块,发现有需要GC的对象时,将一块的存活空间复制到另一块。然后在角色互换。相对于标记压缩算法,需要两个内存空间,但较快,用空间换时间。

 

分代思想

短命的归为新生代,长命的归为老年代(在新生代时经过多次GC后没有能够回收,就进入老年代)。

少量对象存活,适合复制算法。大量对象存活,适合标记清理和标记压缩算法。

 

可触及性

可触及的:从根节点的引用链条可触及的对象。不可触及的:在finalize()后,能会进入不能触及状态,不可触及对象不可能复活。finalize()只会被调用一次。在finally中来释放资源比较可靠。不推荐使用System.gc();不可控。

 

栈中引用的对象

方法区中静态成员或者常量引用的对象(全局对象)

JNI方法栈中引用对象

 

Stop-The_World(类比在聚会时打扫房间,聚会时很乱,又有新的垃圾产生,房间永远大少不干净,只有让大家停止活动了,才能将房间打扫干净)

Java中一种全局暂停的现象

全局暂停,所有java代码停止,Native代码可以执行,但不能喝JVM交互。

多半是由于GC引起的:Dump线程,死锁检查,堆Dump。

危害:长时间服务停止,没有响应。遇到HA系统,可能引起准备切换,严重危害生产环境。

分享到:
评论

相关推荐

    Java虚拟机详解04----GC算法和种类【重要】 - 千古壹号 - 博客园.html

    Java虚拟机详解04----GC算法和种类【重要】,有助于更深入理解记忆,文字配图片,10分钟让你记住gc工作机制。

    GC算法与种类

    java,GC,算法,可触及性,stop-the-world是一篇描述GC工作的文章

    深入JVM内核—原理、诊断与优化视频教程-4.GC算法与种类

    在Java世界中,JVM(Java虚拟机)是运行所有Java应用程序的核心,它负责解析字节码、管理内存以及执行线程。...通过实践和研究GC算法及种类,开发者能更有效地管理内存,使Java应用程序运行更加高效。

    22G1GC:分区回收算法说的是什么?1

    总的来说,分区回收算法,特别是G1 GC,通过精细化的内存管理和高效的并发机制,提供了更可控的垃圾回收性能,使得Java应用在处理大规模数据和高并发场景时更具优势。然而,这也要求开发者具备深入的内存管理知识,...

    R语言编写的GBDT算法

    在实际应用中,GBDT常用于回归和分类任务,并因其预测准确性和解释性而被广泛采用。 #### 二、R语言中的GBDT实现 在R语言中,`gbm`包提供了实现GBDT算法的功能。下面将对代码中的关键部分进行详细解析。 #### 三...

    RF-GC-ZY-11-F01 项目文档分类对照表.zip

    在数据挖掘、人工智能、机器学习和算法这样的技术领域,项目文档的管理和分类显得尤为重要,因为这些项目往往涉及到大量的数据处理、模型构建和实验结果。有效的文档分类可以帮助团队成员快速找到特定的数据集、算法...

    一篇文章教你深入理解Java垃圾收集(GC)机制.docx

    - 分代收集算法:根据对象的生命周期,将内存分为新生代和老年代,采用不同的算法进行GC,如新生代常用复制算法,老年代用标记压缩。 4. **方法区(永久代)的GC** - 方法区主要用于存储类的信息,如类的静态变量...

    java虚拟机中的垃圾收集GC.pdf

    ### Java虚拟机中的垃圾收集(GC)运行机制及种类 #### 概述 垃圾收集(Garbage Collection,简称GC)是Java虚拟机(JVM)自动管理内存的重要功能之一。通过自动识别并回收不再使用的对象所占用的内存空间,GC极大地...

    基于GC-MS和计算机智能系统的烟草香精剖析及复配方法初探.rar

    3. 分类与识别:运用机器学习算法,如支持向量机、神经网络等,对香气成分进行分类和识别,提高分析的准确性和效率。 4. 组分关联分析:通过统计分析,找出不同香气成分之间的关联性,为复配方案提供依据。 三、...

    RF-GC-ZY-11-F01 项目文档分类对照表(1).zip

    "RF-GC-ZY-11-F01 项目文档分类对照表(1)"是一个压缩包文件,其中包含了一份名为"RF-GC-ZY-11-F01 项目文档分类对照表(1).xls"的Excel表格,很可能是为了帮助项目团队有效地管理和组织项目文档而创建的。这份表格...

    垃圾收集算法的比较分析

    #### 垃圾收集算法分类 垃圾收集算法大致可以分为两大类:基于引用计数的算法和基于追踪的算法。 ##### 引用计数算法(Reference Counting) 引用计数算法是最直观的垃圾收集方法之一,它通过在每个对象中附加一...

    Java基础和算法基础,主要参考书籍《算法第四版》,《Java程序员面试宝典》, LeetCode试题

    掌握异常分类,理解何时抛出异常以及如何捕获和处理异常,可以提高代码的健壮性。 6. **输入输出流**:Java的IO流系统是处理数据输入和输出的关键,包括字符流和字节流,以及缓冲流、对象流、转换流等。理解流的...

    Java基础[Java基础]--Java GC工作原理

    增量式GC的具体实现算法是Train GC算法,它通过动态调整对象的分组,使得GC可以优先处理那些较旧且较少访问的对象,从而提高回收效率并减少程序暂停时间。 #### 四、分代收集 **4.1 分代理论背景** 分代收集...

    GC032A DataSheet-Release-V1.1-20170314(GC032A DataSheet-Release)

    此外,还配备了DVP(Digital Video Port)和SPI接口,以兼容更多种类的主板或Black Box(BB)系统。 文档中的“DC特性”部分详细列出了传感器的静态电气参数,这对于理解和设计与之配合的电路至关重要。而“块图”...

    Java垃圾回收新算法刍探.pdf

    3. 分代收集算法:该算法将对象分为不同的代,然后根据对象的生命周期和使用频率,选择合适的垃圾回收算法。 Java垃圾回收机制的实现: 1. 垃圾回收器:垃圾回收器是Java虚拟机中的一个组件,负责垃圾回收的实现。...

    JVM性能调优-JVM内存整理及GC回收.pdf_java_jvm_

    3. **GC算法**: - **标记-清除(Mark-Sweep)**:标记所有存活对象,然后清除死亡对象。 - **复制(Copying)**:将存活对象复制到一块新的区域,然后清空原区域。 - **标记-压缩(Mark-Compact)**:标记后,将...

    JVM 基础 JAVA 并发 JVM 性能调优 LeetCode 算法 .......

    JVM 中有多种垃圾回收算法,包括标记清除算法、拷贝算法和标记压缩算法。每种算法都有其优缺,选择合适的算法取决于具体的应用场景。 7. 确定对象是否是垃圾 确定对象是否是垃圾可以使用引用计数或根可达算法。...

    matlab grabcut

    其核心思想是通过用户提供的初始种子信息,自动推断出前景和背景像素的分类,从而实现精确的图像分割。 在Matlab中,GrabCut算法主要通过`vision.GrabCut`类来实现。首先,我们需要创建一个`vision.GrabCut`对象,...

    第3章 分类算法 3( .1. 数据集介绍与划分 3 3.1.1. 数据集的划分 3 3.1.2. sklearn数据集介绍

    第3章 分类算法 3 3.1. 数据集介绍与划分 3 3.1.1. 数据集的划分 3 3.1.2. sklearn数据集介绍 4 3.2. sklearn转换器和估计器 6 3.2.1. 转换器和估计器 6 3.3. K-近邻算法 8 3.3.1. K-近邻算法(KNN) 9 3.3.2. 电影...

Global site tag (gtag.js) - Google Analytics