java8 matespace_metaspace元空间gc垃圾回收问题

本文讨论了Java8中遇到的Metaspace元空间垃圾回收问题,特别是在G1垃圾回收器下。内容涉及Metaspace的触发GC条件,配置参数如`MaxMetaspaceSize`和`MetaspaceSize`的影响,以及Metaspace与堆对象的关系。文章指出,元空间的GC并不直接导致Old Gen的Full GC,并建议调整配置以降低GC频率。同时,探讨了如何通过卸载类来释放元空间内存,尤其是在无`MaxMetaspaceSize`限制时的情况。
摘要由CSDN通过智能技术生成

这是我使用jvm的g1垃圾回收在GC时遇到的问题:

2400.241: [GC concurrent-root-region-scan-start]

2400.241: [Full GC (Metadata GC Threshold) 2400.252: [GC concurrent-root-region-scan-end, 0.0101404 secs]

2400.252: [GC concurrent-mark-start]

1151M->603M(4356M), 2.6980537 secs]

[Eden: 0.0B(2558.0M)->0.0B(2613.0M) Survivors: 55.0M->0.0B Heap: 1151.7M(4356.0M)->603.6M(4356.0M)], [Metaspace: 259187K->92248K(1034240K)]

[Times: user=3.92 sys=0.00, real=2.70 secs]

这需要很长时间,每20-30分钟,metaspace就会触发一次完整的gc。

我的jvm metaspce元空间大小配置参数如下:

"-XX:MaxMetaspaceSize=768M",

"-XX:MetaspaceSize=256M"

每次它达到256M时,就会触发一次完整的full gc。

当它到达这个第一个高水位线时,它是否应该在下次达到最大内存之前使它变大?另外,metaspace上的gc会触发old gen老年代上的完整gc吗?

这使得p99的响应时间比我预期的要高。

分析原因

我的理解是元空间本身并不是每次被垃圾收集的。相反࿰

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值