美文网首页
JDK1.8-GC垃圾回收算法

JDK1.8-GC垃圾回收算法

作者: Wannay | 来源:发表于2021-03-18 23:35 被阅读0次
  • 次数上频繁收集Young区,次数上较少收集Old区,基本不动元空间。
  • GC和FGC的区别:
  • GC是指新生代的垃圾回收,GC很频繁,因为大多数的Java对象存活时间都很短,所以GC的回收速度很快、也很频繁。
  • FGC是指养老区(Old)的垃圾回收,GC回收速度不频繁,也不快,因为要扫描整个老年区的空间,所以它的速度比GC慢10倍左右。
  • GC的四大算法
  • 1.引用计数法
  • 2.复制算法(Copying)
  • 3.标记清除(Mark-Swap)
  • 4.标记压缩(Mark-Compact)

1.引用计数法

  • JVM的实现一般不使用这种方法,应用在微软的COM/ActionScript3/Python...
  • 有被引用这个对象,计数器就+1,没有被引用的就被回收了
  • 缺点如下:
  • 1.每次对对象进行赋值的时候都要将计数器+1,且计数器本身也有消耗
  • 2.较难处理循环引用(A引用B,B引用A)
System.gc();  //手动唤醒GC,禁用手动GC,JDK1.8的垃圾回收已经很智能了
//不是立刻执行,也是要看系统的调度,类似创建了线程,也不是立刻执行,得看系统的调度

只有main方法,后台有几个线程?两个,一个main,一个GC

public class Main {
    public static void main(String[] args) {

    }
}

2.复制算法

  • 新生代(Young)中使用的GC就是使用的复制算法。
-XX:MaxTenuringThreshold  //设置对象再新生代中存活代数,默认是15
  • 复制算法的基本思想是将内存分为两块,每次只用其中一块,这块内存用完,就将或者的对象复制到另外一块上去。复制算法不会产生内存碎片,但是耗空间
  • 从根集合(GC ROOT)开始,通过Tracing从FROM区找到存活对象,拷贝到TO区中;FROM区和TO区交换,下次内存分配继续从TO开始。

3.标记清除算法

  • 思想是:先从内存中标记出来要回收的对象,然后进行统一回收。
  • 标记清除算法空间节约出来了,但是会产生内存碎片。而且要扫描两次,一次标记,一次清除,浪费了时间。

4.标记压缩算法

  • 思想是:先从内存中标记出来要回收的对象,然后进行统一回收,之后对剩下来的存活的对象进行整理(丢在同一侧)
  • 缺点:效率不高,需要一定对象的成本,耗时比较严重。
  • 改进:标记-清除-压缩算法:标记清除和标记压缩算法的折中,进行多次的GC后才压缩。

JVM的GC用的是哪种方法?

新生代GC使用复制算法,在老年代FGC使用标记压缩、标记清除算法

相关文章

  • JDK1.8-GC垃圾回收算法

    次数上频繁收集Young区,次数上较少收集Old区,基本不动元空间。 GC和FGC的区别: GC是指新生代的垃圾回...

  • JVM垃圾回收

    GC垃圾回收流程 垃圾收集算法 垃圾回收算法 引用类型 垃圾回收的时机 1.垃圾收集算法 (1).引用计数算法含义...

  • JVM垃圾回收算法

    Java基础:JVM垃圾回收算法 [toc] 参考:Java基础:JVM垃圾回收算法图解JVM垃圾回收算法 总结:...

  • 垃圾回收算法、回收机制与总结 ---JVM

    垃圾回收算法、回收机制与总结 ---JVM 一、垃圾回收算法 1.标记清除 标记--清除算法将垃圾回收分为两个阶段...

  • JVM调优之垃圾定位、垃圾回收算法、垃圾处理器对比

    谈垃圾回收器之前,要先讲讲垃圾回收算法,以及JVM对垃圾的认定策略,JVM垃圾回收器是垃圾回收算法的具体实现,了解...

  • JVM - 垃圾回收算法

    JVM - 垃圾回收算法 这里只介绍垃圾回收算法的思想,不关注具体的算法细节垃圾回收算法发展已经有很长的历史 问题...

  • JVM(七)垃圾收集器

    1. 垃圾收集器概述 1.1 垃圾回收器与垃圾回收算法 垃圾回收算法分类两类,第一类算法判断对象生死算法,如引用计...

  • 一文了解JVM全部垃圾回收器,从Serial到ZGC

    《对象搜索算法与回收算法》介绍了垃圾回收的基础算法,相当于垃圾回收的方法论。接下来就详细看看垃圾回收的具体实现。 ...

  • 一文了解JVM全部垃圾回收器,从Serial到ZGC

    《对象搜索算法与回收算法》介绍了垃圾回收的基础算法,相当于垃圾回收的方法论。接下来就详细看看垃圾回收的具体实现。 ...

  • JVM垃圾回收算法

    垃圾是指死掉的对象,其回收涉及回收算法和回收器。这篇文章只谈论垃圾回收算法。 1、标记-清除算法(Mark-Swe...

网友评论

      本文标题:JDK1.8-GC垃圾回收算法

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