分代收集算法
概念:根据对象的不同类型将内存划分为不同的区域,JVM将堆划分为新生代、老年代和永久代,并根据各个年代的特点分别采用不同的GC算法
新生代——负责算法
老年代——标记整理算法
特点 | 适用算法 | |
---|---|---|
新生代 | 对象生命周期短,标记阶段会标记大量已死亡对象 | 复制算法 |
老年代 | 生命周期长的对象、大对象,可回收数量少 | 标记整理算法 |
永久代 | 存储Class类、常量、方法描述等 | 回收废弃的常量、无用的类 |
分区收集算法
概念:将整个堆空间划分为连续的大小不同的小区域,每个小区域单独进行内存使用和垃圾回收,这样做的好处是可以根据每个小区域内存的大小灵活使用和释放内存。
根据系统可接受的停顿时间,每次都快速回收若干个小区域,从而减少一次GC所产生的的停顿时间,最后以多次并行累加的方式逐步完成整个内存区域的垃圾回收。