Loading...

Java中有哪些垃圾回收算法

Java中的垃圾回收算法主要有3种,分别是标记-清除算法复制算法标记-整理算法

1.标记-清除算法

这种算法的逻辑其实很简单,就是先遍历一遍,把有用的东西都打个勾✅(标记),然后把那些没打勾的垃圾直接扔掉(清除)。

不过,这种算法存在一个缺点,就是会留下内存碎片

2.复制算法

复制算法可以很好地解决内存碎片问题,这种算法是把内存一分为二,平时只用一半。

回收的时候,会把活着的对象全部复制到另一半去,然后把原来的那一半直接清空。

这种算法的优点是快,可以保证没有碎片,但是需轮流着一半的空间不能用,太浪费空间了。

3.标记-整理算法

标记-整理算法是老年代常用的算法。

对老年代的对象,因为存活的时间长,如果采用复制算法,需要复制一大堆,速度太慢;

但是,标记-清除又会产生碎片。

所以,标记-整理算法是先进行标记,然后把所有活着的对象往一端推,再把剩下的空间全部清空。

通过这种方式,既不会产生碎片,也不会浪费掉一半的空间,不过,把所有活着的对象往一端推这个整理的动作会比较耗时。

最后更新于 2026-04-05 17:35:33
Code Road Record