java中JVM的垃圾回收算法

1.复制算法
基本思想:
将内存分为两块,每当发生垃圾回收的时候就把一块内存中还存活的对象复制到另一块中,然后将原来内存中的对象清空,如此反复。
复制算法的优点:

  • 不会产生内存碎片

复制算法的缺点:

  1. 浪费了一半的内存空间(有一半的空间是不能存任何对象的)
  2. 只适合对象存活率低的情况(假如说对象存活率很高的话,进行复制的时候会消耗大量的时间)

2.标记清除算法
基本思想:
垃圾回收时,遍历整个堆,对堆中存活的对象进行标记,然后再重新遍历整个堆,对没有被标记的对象进行垃圾回收
java中JVM的垃圾回收算法
缺点:

  1. 两次扫描(标记的时候一次,清楚的时候一次),效率很低,比较耗时
  2. 会产生内存碎片

3.标记压缩算法
基本思想:
首先遍历整个堆,对堆中还存活的对象进行标记,然后再次扫描整个堆,将堆中还存活的对象向一端移动
java中JVM的垃圾回收算法
优点:

  1. 和标记清除算法相比,只需要维护一个边界内存地址就行,减少了很多空间开销
  2. 没有内存碎片