垃圾回收器

文章介绍了Java中的可达性分析GCRoots,包括虚拟机栈、方法区、本地方法栈中的引用类型。接着讨论了不同类型的引用,如强引用、软引用、弱引用和虚引用及其作用。此外,还概述了几种垃圾收集算法,如标记-清除、复制、标记-整理以及G1和CMS垃圾回收器的特点和应用场景。
摘要由CSDN通过智能技术生成

可达性分析
GC Roots :
虚拟机栈(栈帧中的本地变量表)中引用的对象
方法区中类静态属性引用的对象。
方法区中常量引用的对象。
本地方法栈中 JNI (即一般说的 Native 方法)引用的对象

引用的几种方式
强引用:有引用不回收
软引用: 内存溢出前回收
弱引用:无论当前内存是否足够,都会回收掉只被弱引用关联的对象
虚引用:唯一目的就是能在这个对象被收集器回收时收到一个系统通知
将这个虚引用加入引用队列,在其关联的虚引用出队前,不会彻底销毁该对象。 所以可以通过检查引用队列中是否有相应的虚引用来判断对象是否已经被回收了。
如果一个对象没有强引用和软引用,对于垃圾回收器而言便是可以被清除的,在清除之前,会调用其finalize方法,如果一个对象已经被调用过finalize方法但是还没有被释放,它就变成了一个虚可达对象。

垃圾收集算法
1、标记-清除算法
不足:1:效率低2:空间碎片
2:复制算法(新生代)
Eden:from:to=8:1:1,存活的对象移到to区
3:标记-整理算法(老年代)

老年代:
4:G1 jdk9:一个横跨新生代和老年代的垃圾回收器。实际上,它已经打乱了前面所说的堆结构,直接将堆分成极其多个区域。每个区域都可以充当 Eden 区、Survivor 区或者老年代中的一个。它采用的是标记 - 压缩算法,而且和 CMS 一样都能够在应用程序运行过程中并发地进行垃圾回收。将内存上的空洞压缩

5:jdk8之前 CMS 采用的是标记 - 清除算法,并且是并发的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值