`

jvm_2_GC算法和种类简介

    博客分类:
  • jvm
 
阅读更多

 

 

1 GC概念

 gc的对象是堆空间 永久区(即方法区)

 

2 GC算法(负责如何去释放空间)

a) 引用计数器: 对对象的引用个数如果为0时,则执行回收,这种方式比较老,在引用和去引用时伴随计算,影响性能,并且很难处理循环引用,如下图,最后的循环引用,无法被回收,java也没有使用

 



 

 

 

b) 标记清除: 清除算法是现代垃圾回收算法的思想基础,此算法将垃圾回收分为两个阶段,标记阶段和清除阶段,标记阶段中,通过根节点,标记所有可以达到的节点对象, 在清除阶段中,清除所有未被标记的对象

 



 

 

 

c) 标记压缩: 适合于存活对象比较多的场合,比如老年代, 是基于标记清除算法基础上做的优化,

同样的标记方式,仅仅在清除的时候,是将所有要存活对象压缩到内存的另一端,然后再清除边界外的所有空间。



 

 

 

 

 

d) 复制算法: 不适于存活对象较多的场合 比如老年代,做法是将内存空间分为两块,每次只是用其中一块,在垃圾回收时,将正在使用的内存区域中存活对象复制到未使用内存中,然后清空正在使用内存中的对象,后交换两个内存角色, 最大的问题就是空间浪费。



 

 

分代思想和对应算法:

少量对象存活,适合复制算法

大量对象存活,适合标记清理或者标记压缩

 

 

根:

a) 栈中引用的对象

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

c) JNI方法栈中引用的对象

 

 

3 Stop-The-World

 

全局停顿现象,所有线程都终止,多半都是GC引起

类比于聚会时打扫房间,聚会时很乱,同时又有新的垃圾不断产生,房间永远打扫不干净,只能让给大家

停止活动,才能将房间打扫干净。

 

危害: 服务长时间停止,没有响应, 或者在HA系统中,引起主从机器都开启,危害生产环境。

 

 

 

 

  • 大小: 29.7 KB
  • 大小: 17 KB
  • 大小: 13.4 KB
  • 大小: 47.3 KB
分享到:
评论

相关推荐

    JVM_GC调优

    ### JVM_GC调优详解 #### 一、JVM体系结构概览 ...理解不同GC算法的特点和适用场景,可以帮助开发者选择最适合特定应用场景的垃圾回收策略。同时,掌握JVM内存模型和垃圾回收器的工作原理也是进行有效调优的基础。

    JVM、GC详解及调优_jvm_JVM、GC详解及调优_

    5. **内存分配策略**:如使用CMS或G1等高级GC算法,降低STW影响。 此外,JVM调优还包括JVM参数的调整,如堆大小(-Xms, -Xmx)、初始堆大小(-Xmn)、Metaspace大小(-XX:MaxMetaspaceSize)等。理解JIT编译器的...

    jvm_gc.rar_jvm_垃圾回收

    5. **GC日志分析**:通过分析JVM产生的GC日志,可以了解垃圾回收的效率和内存使用情况,从而调整参数以优化性能。 6. **内存泄漏检测**:关注长期未被释放的对象,可能暗示存在内存泄漏问题。开发者可以通过工具如...

    jvm_jvm新手_jvm_

    2. **垃圾收集(GC)**: - **新生代**:包括Eden和两个Survivor区,主要用于存放新创建的对象,当Eden满时触发Minor GC。 - **老年代**:存放长期存活的对象,达到一定年龄或大小的对象会晋升到老年代。 - **...

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

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

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

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

    JVM体系结构与GC调优

    JVM体系结构与GC调优相关介绍,包含JVM体系结构、常用GC算法、内存管理、垃圾回收器、虚拟机调优、相关监控工具等

    inside_jvm.rar_Inside the JVM_gettingloaded.html_inside jvm_insi

    垃圾收集是JVM内存管理的关键,有多种GC算法,如标记-清除、复制、标记-整理和分代收集等。这些算法各有优缺点,根据应用场景选择合适的GC策略可以提升系统的响应速度和内存使用效率。 字节码执行是JVM的另一个核心...

    JVM调优,GC算法汇总

    了解并熟练掌握这些GC算法和JVM调优技巧,对于解决性能问题、优化Java应用的运行效率至关重要,同时也是面试中经常被问到的话题。通过实践和理解,开发者可以更好地理解和控制JVM的行为,从而编写出更高效、更稳定的...

    jvm相关代码仓库,包括类加载机制,字节码执行机制,JVM内存模型,GC垃圾回收,JV-jvm_practice.zip

    GC有多种算法,如标记-清除、复制、标记-整理和分代收集等。这个代码仓库可能会包含各种GC策略的示例,帮助你了解如何调整和分析GC性能。 5. ** JV-jvm_practice**: 这可能是项目的主要代码目录,包含了上述所有...

    JVM.pdf_jvm_

    GC根据对象的存活状态采用不同的算法,如新生代的复制算法、老年代的标记-清除或标记-整理算法。 2. **内存分区与GC策略**: - Minor GC:针对新生代的垃圾回收。 - Major GC / Full GC:涉及老年代或整个堆的...

    Jvm1.8_GC.mmap

    GC:Gabage Collection,指JVM堆内存区域的垃圾回收 Minor GC:年轻代垃圾回收,所有的Majar GC都会触发进程暂停,只是这...Major GC发生在Old Generation区域被占满时,Major GC与Minor GC算法不同,相对要慢很多。

    IBM-JVM.rar_jvm_site:www.pudn.com

    此外,JVM参数的设置也至关重要,例如堆大小、新生代和老年代的比例、GC策略等,都需要根据应用特性和资源状况进行合理配置。 总的来说,IBM JVM的深入理解和优化是提升Java应用性能的关键。这个压缩包中的IBM JVM....

    JVM垃圾回收机制与GC性能调优

    此外,监控GC日志,分析GC行为,以及使用适当的GC算法(如CMS、G1或ZGC)也是优化过程中的关键步骤。通过这些实践,开发者能够确保Java应用程序在运行时具有良好的内存管理和高效的资源利用率。

    jvm和gc详解及调优

    《JVM和GC详解及调优》是一本深入解析Java虚拟机(JVM)和垃圾收集(Garbage Collection,简称GC)的专业书籍,对于Java开发者来说,是进阶提升的必备资料。书中详尽地阐述了JVM的工作原理,以及如何进行有效的性能...

    JVM和性能优化学习思维笔记_swim5we_jvm_性能优化_

    理解不同GC算法如Serial、ParNew、Parallel Scavenge、CMS、G1和ZGC的工作原理和应用场景,有助于减少垃圾回收带来的性能影响。 4. **性能监控工具**:如JConsole、VisualVM、JProfiler等,它们可以帮助开发者实时...

    java_jvm_

    4. **分代收集(Generational GC)**:根据对象的生命周期将内存划分为新生代(Young Generation)和老年代(Old Generation),针对不同代采用不同的收集策略,如新生代常采用复制算法,老年代则采用标记-整理或...

    jvm_learn_note.pdf

    2. **可达性分析算法**:从GC Roots开始遍历引用链,无法到达的对象视为可回收。 垃圾收集器还分为不同类别,如: - **部分收集**:针对新生代或老年代。 - **整堆收集**:涉及整个Java堆。 - **混合收集**:同时...

    jvm 参数及gc详解

    Java虚拟机(JVM)是Java程序运行的基础,它的配置参数和垃圾收集(GC)机制对于优化应用程序性能至关重要。本文将深入探讨JVM参数及其与Java垃圾收集相关的知识。 一、JVM参数详解 JVM参数可以分为三类:启动参数...

    2_JVM_3章下~5.pdf

    在深入学习Java虚拟机(JVM)的过程中,垃圾回收(GC)机制是必须掌握的关键知识点之一。GC的主要目的是回收不再使用的内存空间,为新的对象分配内存。在JVM中,垃圾回收器(Garbage Collector)扮演着至关重要的...

Global site tag (gtag.js) - Google Analytics