美文网首页
GC垃圾收集器

GC垃圾收集器

作者: 许忠钰的博客 | 来源:发表于2021-06-22 09:40 被阅读0次

目前所有垃圾收集器都是基于分代收集理论实现垃圾对象的清理,根据对象存活周期将不同的对象分配到同一个内存块中

标记复制算法 带有整理的标记算法,将可用内存对半分一半作为使用,一半作为复制时备用,对内存的利用率比较低
标记清除算法 没有整理,清除后对象内存碎片化 容易产生浮动碎片垃圾
标记整理算法 第一步和清除算法一样,第二步进行整理将对象对齐,减少碎片垃圾

Java堆中主要有年轻代和老年代 GC垃圾收集器的执行通过JVM的minor GC和full GC执行 GC垃圾收集器也分为老年代垃圾收集器和年轻代垃圾收集器

所有垃圾收集器都有STOP ZHE WORLD的机制(下文称之为STW):在GC垃圾收集器执行垃圾收集的时候,暂停所有应用线程的执行直到垃圾收集器执行完成,对用户来说可能在某一个操作出现卡顿,执行慢的现象,对电商项目来说这是非常关注的一个点,JVM调优的其中一个重点就是降低STW的时间增加用户使用友好度

常见的垃圾收集器

Serial收集器(-XX:+UseSerialGC -XX:+UseSerialOldGC)
俗称串行(单线程)垃圾收集器 能够兼顾年轻代和老年代的垃圾收集,由于没有多线程下的并行收集所以在单线程下有高效快速的优点
老年代:标记整理算法 年轻代:标记复制算法

应用程序线程 - > GC收集线程,应用程序线程(暂停) - > 应用程序线程

Parallel收集器(-XX:+UseParallelGC(年轻代),-XX:+UseParallelOldGC(老年代))
为Java默认使用的垃圾收集器,在Serial收集器的基础上加入了并行垃圾收集,是Serial收集器的多线程版本,吞吐量高,但是STW时间较长,对用户使用不太友好

应用程序线程 - > GC收集线程(多线程并发执行) ,应用程序线程(暂停)- > 应用程序线程

ParNew收集器(-XX:+UseParNewGC)
parallel收集器的进阶版本,垃圾收集流程很类似,目的是为了能和CMS收集器一起使用

相关文章

  • JVM垃圾收集器

    垃圾收集器的理论依据是垃圾回收算法,这里是指堆内存的垃圾收集器。 垃圾收集器的两大指标: GC时间:GC时会暂停其...

  • GC垃圾回收机制

    GC算法 垃圾收集器 (标记-清除,复制,压缩,gc垃圾收集需要判断是否覆盖finalize方法?) 概述 垃圾收...

  • 读书笔记---gc收集器

    GC垃圾收集器整理 收集器种类有下面几种: serial / serial old 收集器 parnew收集器 ...

  • 关于垃圾回收

    Runtime.getRuntime().gc() 是告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是...

  • 2018-09-15

    GC算法垃圾收集器 概述 垃圾收集 Garbage Collection 通常被称为“GC”,它诞生于1960年 ...

  • Leakcanary

    Leakcanary System.gc(); //告诉垃圾收集器打算进行垃圾收集,而垃圾收集器进不进行收集是不确...

  • JVM(八)-垃圾回收机制与垃圾收集器

    JVM垃圾回收(GC)模型 垃圾判断算法 GC算法 垃圾收集器的实现和选择 垃圾判断算法 引用计数法(Refere...

  • JVM垃圾回收

    JVM垃圾收集器 一、垃圾收集器的分类 1.1 Serial GC 出现的最早,比较古老,最大的特点就是垃圾收集策...

  • .Net GC

    什么是GC GC如其名,就是垃圾收集,当然这里仅就内存而言。Garbage Collector(垃圾收集器,在不至...

  • JVM——GC垃圾收集器

    前言 今天就来介绍一下GC垃圾收集器。 GC 垃圾收集器 Java 堆内存被划分为新生代和年老代两部分,新生代主要...

网友评论

      本文标题:GC垃圾收集器

      本文链接:https://www.haomeiwen.com/subject/ebndyltx.html