Java - 垃圾回收的几种算法简述

Posted 简简单单OnlineZuozuo

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java - 垃圾回收的几种算法简述相关的知识,希望对你有一定的参考价值。

Java - 垃圾回收的几种算法简述


1、标记-清除算法

1、先标记需要回收的对象
2、标记完成后统一回收标记的对象

一方面,标记清除效率不高
另一方面,因为对象的大小的随机性,而产生大量不连续的小的不可用内存空间(内存碎片),
从而导致大对象的创建容易产生内存空间不足而提前触发 GC

2、复制算法

1、把可用内存空间一分为二,每次使用其中一块
2、用完时,复制所有存活的对象到新的内存空间,然后回收旧的内存空间

一方面,内存利用率低下
另一方面,对象少的时候,效率很高,存活对象多时复制的效率就很低了

3、标记-整理算法

1、标记所有需要回收的对象
2、把所有的存活对象向一端移动
3、回收存活对象之外的内存空间

解决了复制算法在多对象环境下的效率问题
解决了内存碎片问题

4、分代收集算法

1、根据对象生存周期的不同,划分内存块
2、对不同的块使用不同的算法

以上是关于Java - 垃圾回收的几种算法简述的主要内容,如果未能解决你的问题,请参考以下文章

在垃圾回收器中有哪几种判断是否需要被回收的几种方法

JVM学习--垃圾回收算法

如何修改jvm虚拟机垃圾回收器

Java开发中垃圾回收的最佳做法?

JVM调优的几种场景(建议收藏)

Java 垃圾回收 - 收集算法