JVM————垃圾回收的算法

1. 标记-清除算法(Mark-Sweep)

最基础的垃圾回收算法,分为两个阶段,标注和清除。标记阶段标记出所有需要回收的对象,清除阶段回收被标记的对象所占用的空间。

缺点:该算法最大的问题是内存碎片化严重,后续可能发生大对象不能找到可利用空间的问题。

2. 复制算法(Copying)

适合回收新生代

按内存容量将内存划分为等大小的两块。每次只使用其中一块,当这一块内存满后将尚存活的对象复制到另一块上去,把已使用的内存清掉

3. 标记-整理算法(Mark-Compact)

适合回收老年代

先标记,然后让所有存活得到对象都向一端移动,然后直接清除掉端边界以外的内存。

4、分代收集算法(Generational Collection)

根据对象的存活周期不同将内存划分为不同的几块,根据各个年代的特点采用适当的收集算法。

新生代:朝生夕灭的对象(例如:方法的局部变量等)。

老年代:存活得比较久,但还是要死的对象(例如:缓存对象、单例对象等)。

永久代:对象生成后几乎不灭的对象(例如:加载过的类信息

老年代采用什么算法?

标记清除,标记整理算法

发布了129 篇原创文章 · 获赞 9 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_41808387/article/details/104578902