微服务应用启动时候,产生几次fullgc分析

问题,在生产环境中,发现很多应用在启动的时候,就会出现几次fullgc,但是在gc.log中并未发现相应的fullgc日志。应用也能正常启动成功。

  1. 应用分配了4G内存;
  2. 镜像为openjdk8;
  3. jvm参数为:
    -Xms2688m 
    -Xmx2688m 
    -Xloggc:/**/gc.log 
    -XX:NewSize=900m 
    -XX:MaxNewSize=900m 
    -XX:+UseConcMarkSweepGC 
    -XX:CMSFullGCsBeforeCompaction=5 
    -XX:+UseCMSCompactAtFullCollection 
    -XX:+CMSParallelRemarkEnabled 
    -XX:+CMSPermGenSweepingEnabled 
    -XX:+CMSClassUnloadingEnabled 
    -XX:+HeapDumpOnOutOfMemoryError 
    -XX:+PrintGCDetails 
    -XX:+PrintGCDateStamps 
    -verbose:gc 
    -XX:+PrintClassHistogramBeforeFullGC 
    -XX:+PrintClassHistogramAfterFullGC 
    -XX:+PrintCommandLineFlags 
    -XX:+PrintGCApplicationConcurrentTime 
    -XX:+PrintGCApplicationStoppedTime 
    -XX:+PrintTenuringDistribution 
    -XX:+PrintHeapAtGC 
    -XX:+UseCMSInitiatingOccupancyOnly 
    -XX:CMSInitiatingOccupancyFraction=70 
    -XX:+DisableExplicitGC 
    -XX:+UseCompressedOops 
    -XX:+DoEscapeAnalysis 
    -XX:MaxTenuringThreshold=10 



    现象:在启动成功后通过jstat查询,多次发现都有4次fullgc,如图所示:

因为应用能成功部署,并正常访问等情况,可以判断发现堆内存等分配都是比较正常,并且gc日志并未找到相关的fullgc日志。
经过度娘和谷歌等,并未找到直接类似的答案,但是注意到openjdk8新增了元空间,而且元空间默认大小为21M,对于一个比较大的应用,空间不足导致fullgc,然后动态扩展了几次,为了验证下猜想,新增了元空间的默认大小设置:-XX:MetaspaceSize=200M,然后部署成功,并jstat查询:



验证了猜想。

你可能感兴趣的:(jvm,fullgc,jvm调优,java,微服务)