JVM参数-XXMatespaceSize的含义

在JDK1.8开始有了元空间区(Matespace)来替换永久代(Permanent Generation),那么在设置JVM参数的时候,也要增加上Matespace的相关参数了。

在把JVM参数设置为:

-Xms1g -Xmx1g -Xmn512m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=128m -XX:+UseParNewGC -XX:+UseConcMarkSweepGC -XX:+UseCMSCompactAtFullCollection -XX:CMSInitiatingOccupancyFraction=80

但是程序启动运行之后发现

 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU    CCSC   CCSU   YGC     YGCT    FGC    FGCT     GCT   
52416.0 52416.0  0.0   701.8  419456.0 404194.7  524288.0   161204.9  82560.0 79399.5 10112.0 9447.6     67    9.079   3      1.732   10.810
52416.0 52416.0  0.0   701.8  419456.0 404327.0  524288.0   161204.9  82560.0 79399.5 10112.0 9447.6     67    9.079   3      1.732   10.810
52416.0 52416.0  0.0   701.8  419456.0 404327.0  524288.0   161204.9  82560.0 79399.5 10112.0 9447.6     67    9.079   3      1.732   10.810
52416.0 52416.0  0.0   701.8  419456.0 404327.0  524288.0   161204.9  82560.0 79399.5 10112.0 9447.6     67    9.079   3      1.732   10.810
52416.0 52416.0  0.0   701.8  419456.0 404327.0  524288.0   161204.9  82560.0 79399.5 10112.0 9447.6     67    9.079   3      1.732   10.810

实际上Metespace的大小只有80.625m,和配置中的128m差距很大。是参数设置没有生效么?

其实不是的,MetaspaceSize 表示的并非是元空间的大小,它的含义是:主要控制matesaceGC发生的初始阈值,也就是最小阈值。也就是说当使用的matespace空间到达了MetaspaceSize的时候,就会触发Metaspace的GC。

MaxMetaspaceSize表示的是保证committed的内存不会超过这个值,一旦超过这个值就会触发GC。

注意:在jvm启动的时候,并不会分配MaxMetaspaceSize这么大的一块内存出来,metaspace是可以一直扩容的,直到到达MaxMetaspaceSize。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值