FullGC的⼀些常见原因in turn>crisps
1. ()⽅法的调⽤
2. ⽼年代不⾜
3. 永久代不⾜
4. concurrent mode failure
dial
情人节快乐 英文concurrent mode failure是在执⾏CMS GC的过程中同时有对象要放⼊⽼年代,⽽此时⽼年代空间不⾜造成的(有时候“空间不⾜”是CMS GC时当前的浮动垃圾过多导致暂时性的空间不⾜触发Full GC)。
相关参数:-XX:+UCMSInitiatingOccupancyOnly ,如果没有设置此参数,虚拟机会根据收集的数据决定是否触发(建议线上环境带上这个参数,不然会加⼤问题排查的难度)。
情人节英语怎么说相关参数:-XX:CMSInitiatingOccupancyFraction=80,即⽼年代满80%时触发CMS GC。设置太⾼,就容易产⽣concurrent mode failure,设置过低,CMS GC⼜太过频繁。
相关参数:-XX:UCMSCompactAtFullCollection=true,由于CMS没有对内存进⾏压缩,所以会有内存碎⽚,设置此参数,默认每次执⾏Full GC的时候会进⾏整理压缩,⽬前默认是true。
手技>alanis moristte
相关参数:-XX:CMSFullGCsBeforeCompaction=n,指定多少次不压缩的CMS GC刚才之后,跟着来⼀次带压缩的CMS GC。默认是0,表⽰每次发⽣forground的cms gc 都会进⾏压缩,但压缩会影响暂停时间,因此可以适当调整次参数。
5. promotion failed
minor gc时年轻代的存活区空间不⾜⽽晋升⽼年代,⽼年代⼜空间不⾜⽽触发full gc。
出国英语相关参数: -XX:SurvivorRatio=8,设置eden和survivor的⽐例,默认8:1。
相关参数: -XX:MaxTenuringThreshold=15,最多经过多少次minor gc后存活的年轻代对象会晋升⽼年代,默认15。
8年级下册英语6. 统计得到的Minor GC晋升到旧⽣代的平均⼤⼩⼤于⽼年代的剩余空间
当准备要触发⼀次young GC时,如果发现统计数据说之前young GC的平均晋升⼤⼩⽐⽬前old gen剩余的空间⼤,则不会触发young GC⽽是转为触发full GC(因为HotSpot VM的GC⾥,除了CMS的concurrent collection之外,其它能收集old gen的GC都会同时收集整个GC堆,包括young gen,所以不需要事先触发⼀次单独的young GC)。
>莲雾 英文