jvm垃圾收集器及启动参数使用说明

垃圾收集器表示内存回收的具体实现,区别于垃圾收集算法点击查看(相当于方法论),收集器基于收集算法实现。同时为了降低回收内存过程中对用户线程的影响的时间,衍生出不同的收集器。一般情况下年轻代需要回收的内存较多,存活对象较少,采用复制算法,年老代存活对象较多,需要回收的内存较少,采用标记清除/整理算法。

 

1.serial收集器:串行收集器,采用单线程回收内存,同时暂停所有用户线程直到收集结束。采用复制算法,属于年轻代收集器。

 

2.serial old收集器:串行收集器,采用单线程回收内存,同时暂停所有用户线程直到收集结束。采用标记整理算法,属于年老代收集器。

 

3.ParNew收集器:串行并发收集器,采用多线程回收内存,同时暂停所有用户线程直到收集结束,与serial收集器完全一样采用复制算法,属于年轻代收集器,只是采用多线程。

 

4.Parallel scavenge收集器:串行并发收集器,采用多线程回收内存,同时暂停所有用户线程直到收集结束,与ParNew收集器完全一样,采用复制算法,属于年轻代收集器。只是不再关注暂停用户线程的时间长短,而是关注暂停用户线程的时间占总运行时间的比例。又叫吞吐量,运行用户代码时间/(运行用户代码时间+垃圾收集时间)。

 

5.Parallel old 收集器:串行并发收集器,采用多线程回收内存,同时暂停所有用户线程直到收集结束,采用标记整理算法,属于年老代收集器,为配合Parallel scavenge收集器而生。

 

6.cms(concurrent mark sweep)收集器:并行并发收集器,采用多线程回收内存,部分过程暂停用户线程,采用标记清除算法,属于年老代收集器。

初始标记:串行

并发标记:并行并发

重新标记:串行并发

并发清除:并行并发

 

7.g1(garbage first) 收集器:并行并发收集器,采用多线程回收内存,部分过程暂停用户线程,整体采用标记整理算法,局部采用复制算法,属于分代收集器,独立管理整个gc堆。

初始标记:串行

并发标记:并行并发

最终标记:串行并发(也可并行,效率比串行低)

筛选回收:并行并发

 

配置运行参数

-XX:+UseSerialGC

serial收集器+serial old收集器组合完成内存回收,serial收集器负责回收年轻代,serial old收集器负责回收年老代。

 -XX:+UseParNewGC

ParNew收集器+serial old 收集器,ParNew收集器负责回收年轻代,serial old收集器负责回收年老代。

-XX:+UseConcMarkSweepGC

ParNew + CMS + serial old,serial old作为cms出现concurrent mode failure失败时的替补,负责年老代。

-XX:+UseParallelGC

Parallel scavenge + serial old,Parallel scavenge年轻代,serial old年老代

-XX:+UseParallelOldGC

Parallel scavenge + Parallel old,Parallel scavenge年轻代,Parallel old年老代

-XX:+UseG1GC,使用G1单独管理。

 

G1和CMS比较

1,G1独立管理堆内存。CMS需要配合。

2,CMS使用标记清除,G1标记整理或复制,自适应回收。

3,CMS产生内存碎片。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值