JVM垃圾回收(GC)以及各类垃圾回收器

本文深入探讨了JVM中的垃圾回收(GC)机制,包括GC的两个主要步骤:识别垃圾(引用计数法、可达性分析)和清除垃圾(标记清除、复制、标记整理、分代回收)。详细介绍了各种GC算法的特点和问题,如内存碎片和效率。此外,还阐述了不同代的垃圾回收器,如Serial、ParNew、Parallel Scavenge、CMS、G1、ZGC等的工作原理和优缺点。并发和并行的概念以及在GC中的应用也被提及。文章特别提到了CMS的四个阶段和可能出现的Full GC问题,以及G1和ZGC的创新点,如颜色指针和读屏障技术。
摘要由CSDN通过智能技术生成

GC主要发生在heap(堆)中
GC有识别垃圾和清除垃圾两步,分别的算法为下列算法。
识别垃圾算法:
1.引用计数法 2.可达性分析
引用计数法存在循环引用的问题(引用一次对象,计数加一,当方法结束,计数减一。如果在方法中对象相互引用,导致栈中方法关闭后对象技术大于0,不被识别为垃圾)

可达性分析(也叫根搜索法GC Roots)
只要可以顺着GC Roots找到堆中的对象,就不是垃圾。
在这里插入图片描述

清除垃圾算法:
1.标记清除算法(Mark-Sweep)
2.复制算法(copying)
3.标记整理算法(Mark-Compact)
4.分代回收

1)标记清除算法
特点:实现简单,但是有内存碎片。
先进行标记,标记的垃圾直接清除,不对内存区域进行整理。内存空间被一个个对象隔开,没有连续,因此清除后留下的空闲空间为一个个内存碎片。
2)复制算法:
特点:无内存碎片,但是内存利用率低。
回收前将内存区域分为两半,有垃圾的一半内存区域先标记垃圾,将存活的对象依次排放到原有的未使用的内存区域,再将垃圾清除后放到存活对象的后面,之后开始使用另一半的未使用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值