java8 中metaspace的理解

METASPACE的理解

JAVA 8中引入了metaspace的概念代替了原有perm区,主要的目的还是为了解决perm区大小管理的困境, java 7中perm区是分布在堆内存中,而且metaspace是分布在native memory区域中,从而解决了perm大小设置不慎导致的OOM的问题。

METASPACE的参数
  • metaspaceSize
    初看的时候都会以为这是metaspace的区的初始大小,其实不然,这是metaspace触发fgc的初始化阈值,当metaspace第一次扩容到达metaspace的区域的时候,会触发fgc, fgc后如果metaspace中有大量内存被回收,那么下一此触发的阈值会有所减小,如果回收的内存比较少, 那么下一次触发的阈值会适当变大。
    另外一个需要关注的地方是,当使用 jstat观察m区的占比的时候,需要关注mu这个参数,如果mu这个参数还远小于metaspaceSize, 那么其实当前占比比较大,也不需要太担心。
METASPACE区域只会full gc的时候才能被回收吗?

答案是否定的,日常G1和CMS垃圾回收器触发的时候,都会对METASPACE区域进行垃圾回收,只有当METASPACE区域到达阈值的时候,才会触发full gc。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值