<<深入理解虚拟机>>笔记------垃圾收集器


<<深入理解虚拟机>>第三章

复制算法。
 将内存分为两个区域,一个区域作为工作区域,另一个备用,工作区域内存耗尽,将此区域存活的对象复制到备用区域区域,清理此区域的所有内存,然后备用区域与工作区域角色互换,如此重复。
 缺点:无法完全使用分配的内存。


标记清理算法, 
 将内存中的对象进行标记,然后将标记为死亡的对象一次性清理。
 缺点:会产生内存碎片,在下次分配大对象是,可能出发fullgc。


标记整理算法。
 将内存中的对象进行标记,将存活的对象移动到内存顶端,之后,清理其他内存。


新生代收集器:


Serial收集器。一个单线程收集器。用于虚拟机的新生代,采用的是复制算法,但执行过程中,需要暂停所有用户线程,产生JVM停顿。 虚拟机client模式下的默认收集器,应对小内存,单cpu时,性能良好。
ParNew收集器。 Serial收集器的多线程版本,在单cpu情况下,性能比Serial差,在多核系统中,性能表现良好,-XX:+UseParallelGC 指定使用ParNew收集器,-XX:ParallelGCThreads=xx,指定线程数量,默认与cpu相当。
Parallel Scavenge收集器,一个自适应的收集器,能根据参数设置,动态的调整新身代,老年代的大小,收集算法仍然采用复制算法,但其主要关注点在于吞吐量,即关注于JVM GC的时间与整个系统的运行时间比较。
-XX:MaxGCPauseMillis 参数设定 JVM GC的停顿时间,时间为ms,jvm会尽量在此时间内完成gc。
-XX:GCTimeRatio 参数设定JVM ,设定垃圾收集时间占运行时间的比率,默认为1%


老年代收集器:
Serial old收集器,serial收集器的老年代版本,采用标记整理算法实现,执行过程中,仍然需要暂停用户线程。
Parallel Old收集器,parallel scavenge收集器的老年代版本,采用多线程+标记整理算法实现。与parallel scavenge一起何用,能有效提高吞吐量。
CMS收集器,并行收集算法,减少JVM停顿的时间。采用标记-清理算法实现。
   缺点:因为标记清理算法的实现,会导致更多的full gc ; 占用cpu资源,在cpu较少的情况下(cpu<4)会增加cpu的负担; 如果CMS在收集过程中,用户线程仍然在运行,因此需要要预留足够的内存给用户线程运行,如果预留内存不足,会导致full gc,将会起用serial old收集器,引起更大的停顿。




JVM参数:
-XX:+UseSerialGC 默认client模式使用,用户单cpu场景,使用Serial +Serial old的GC收集器组合。
-XX:+UseParNewGC 使用ParNew+Serial old的收集器组合。
-XX:+ConcMarkSweepGC 使用ParNew+CMS+Serial old的收集器组合。
-XX:+UseParallelGC Server模式的默认设置,使用 Parallel Scavenge+serial old 收集组合
-XX:+UseParallelOldGC 使用 Paralel scavenge+Parallel old收集起起组合 ,最减少CPU停顿时间的组合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值