GC的作用区域:
JVM在进行GC时,并不是对这三个区域统一回收(大部分在新生代(伊甸园区))
- 新生代
- 幸存区(from,to)
- 老年区
GC分为两类:轻GC(普通GC)、重GC(全局GC)
GC的算法有哪些?
标记清除法,标记压缩,复制算法,引用计数法
引用计数法:
复制算法:
- 优点:没有内存的碎片
- 缺点:浪费了内存空间(有一半空间永远是空着的(to区))
复制算法的最佳使用场景:对象存活度较低的时候(新生代)
标记清除算法
- 优点:不需要额外的空间
- 缺点:两次扫描浪费时间,会产生内存碎片
标记压缩
对标记清除进行优化
小结:
内存效率:复制算法 > 标记清除算法 > 标记压缩 (时间复杂度)
内存整齐度:复制算法 = 标记压缩 > 标记清除算法
内存利用率:标记压缩 = 标记清除 > 复制算法
新生代:
- 存活率低
- 复制算法
老年代:
- 区域大,存活率高
- 标记清楚+标记压缩混合实现
评论 (0)