GC垃圾回收

suaxi
2020-11-30 / 0 评论 / 74 阅读 / 正在检测是否收录...

GC的作用区域:

GC的作用区域.png

JVM在进行GC时,并不是对这三个区域统一回收(大部分在新生代(伊甸园区))

  • 新生代
  • 幸存区(from,to)
  • 老年区

GC分为两类:轻GC(普通GC)、重GC(全局GC)

GC的算法有哪些?

标记清除法,标记压缩,复制算法,引用计数法

引用计数法:

引用计数法.png

复制算法:

复制算法.png

复制算法1.png

  • 优点:没有内存的碎片
  • 缺点:浪费了内存空间(有一半空间永远是空着的(to区))

复制算法的最佳使用场景:对象存活度较低的时候(新生代)

标记清除算法

标记清除算法.png

  • 优点:不需要额外的空间
  • 缺点:两次扫描浪费时间,会产生内存碎片

标记压缩

对标记清除进行优化

标记压缩.png

小结:

内存效率:复制算法 > 标记清除算法 > 标记压缩 (时间复杂度)

内存整齐度:复制算法 = 标记压缩 > 标记清除算法

内存利用率:标记压缩 = 标记清除 > 复制算法

新生代:

  • 存活率低
  • 复制算法

老年代:

  • 区域大,存活率高
  • 标记清楚+标记压缩混合实现
0

评论 (0)

取消