首先jvm有三种垃圾回收算法分别为:
1-标记-清除
优点:
1.cms收集器采用这种垃圾回收算法
2.由于老年代存储对象比较多和大,采用标记方式删除较快
缺点:产生内存碎片,如上图,如果清理了两个
1kb
的对象,再添加一个
2kb
的对象,无法放
入这两个位置
2-标记-整理(老年代)
优点:
-
消除了标记-清除算法中,内存区域分散的缺点,我们需要给新对象分配内存时,JVM只需要持有一个内存的起始地址即可。
-
消除了复制算法中内存减半的高额代价
缺点:移动对象开销较大
3-复制(新生代)
优点:
优点:
- 不会出现内存碎片问题
- 对于存活对象少的区域(新生代),简单高效
缺点:浪费空间并且移动对象开销大