java gc
java启动参数内可以指定gc的方式,实际情况中参数比较多,摘出部分参数看一下 A: -XX:+UseG1GC -XX:MaxGCPauseMillis=200 B: -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:CMSInitiatingOccupancyFraction=80 -XX:+UseCMSInitiatingOccupancyOnly 上述两个情况分别简称为A,B。 对于B使用的gc方法是CMS,对于A使用的G1。 注意1:内存结构 需要注意一下,对于CMS的内存结构是这样的 但是对于G1,内存划分不是整块整块的,而是把整个内存一整块堆切分成2000个小region,然后年轻代和年老代混排,对于G1,幸存者区域只有一个,所以在执行"jstat -gc"的时候,会看到S0总是空的。【参考资料2,3】 注意2 jstat -gc <pid>输出的信息单位是KB不是字节 注意3 gc触发的条件 gc条件比较多,说一下常见的条件 对于CMS,伊甸园区满了就会GC 对于G1,伊甸园区满了就会GC,另外还有一个参数控制,当整个堆内存达到一定比例就会GC,InitiatingHeapOccupancyPercent。 注意4 G1 gc的模式 G1中提供了三种模式垃圾回收模式,young gc、mixed gc 和 full gc