垃圾收集算法
- 标记清除法:循环应用
- 引用计数法:空间碎片
- 复制算法:新生代使用该算法进行垃圾收集
- 标记压缩算法:老年代使用该算法进行垃圾收集
为什么新生代和老年代使用不同的算法?
老年代中的对象存活时间长,如果使用复制算法的话,每次都要复制大部分对象,效率低下。
- 分代算法:不同代使用不同算法
- 分区算法:将内存分成多个小区,每个区都能进行GC,粒度更小,提高使用率。
垃圾收集器
串行回收器
单线程
并行回收器
多线程
-
ParNew 回收器
,作用在新生代,
-XX:+UseParNewGC
,开启 ParNew
-XX:ParallelGCThreads=nCPU
设置垃圾回收线程数 -
ParallelGC 回收器
作用在新生代 复制算法
-XX:MaxGCPauseMills
最大垃圾收集停顿时间
-XX:GCTimeRatio
取值0-100,默认99,表示系统将花费1/(1+n)的时间进行GC
-XX:+UseAdaptiveSizePolicy
自适应模式,此模式下,新生代大小、eden、s0/s1的比例,以及MaxTenuringThreshold会被自动调整。 -
ParallelOldGC
,作用在老年代 标记压缩法
CMS回收器
非独占式的,当到达某一阈值时开始垃圾收集,
-XX:+UseConcMarkSweepGC
-XX:ConcGCThreads
网友评论