开篇小故事:
大话:有两套公寓楼,经济危机新公寓住满加房租导致小姑娘开车搬家,要么
1.老年公寓剩余住户《小姑娘公寓总住户空间,没上保险
2.老年公寓剩余住户《小姑娘住户 平均每次危机搬入老年公寓数
3.小姑娘搬家时发现 要搬老年公寓的小姑娘人数》老年公寓剩余数
4.直接限制了老年公寓小姑娘人数到达一定空间百分比时
都全部经济泡沫老年公寓宿管进行FullGC
然而:老年人的一次GC,啧啧 要不得,时间魔术:stop the world时间长
论:如何阻止老年公寓因小姑娘太多导致 老年人发疯STW
1.在经济危机小姑娘住户来来走走时 尽量都在新公寓,减少小姑娘频繁进入老年公寓引起后续恐怖效果;
2.增加新公寓的占地面积;
3.选择老年公寓适当的管理员GC
什么时间会触发GC呢?
JVM分为新生代(Eden/s0/s1)/老年代
1.新生代满了时或无法创建新对象时触发 老年代空间担保机制,来看是直接MinorGC或FullGC
①、是老年代可用内存小于新生代全部对象的大小,如果没开启空间担保参数,会直接触发Full GC,所以一般空间担保参数都会打开;注:jDK1.8之后已经取消了-XX:-HandlePromotionFailure 机制
②、是老年代可用内存小于历次新生代GC后进入老年代的平均对象大小,此时会提前Full GC;
③、是新生代Minor GC后的存活对象大于Survivor,那么就会进入老年代,此时老年代内存不足。
上述情况都会导致老年代Full GC。
④、就是“-XX:CMSInitiatingOccupancyFaction”参数,配置占空间比
2.MinorGC,采用复制算法将Eden+s0/s1无法回收的对象复制到s1/s0,清空Eden+s1/s0
3.垃圾年龄默认15岁后进入老年代
4.大对象进入老年代,可在JVM参数里配置具体大小
1.算法
根可达性算法:
该算法的基本思路