jdk8偷偷的占用了1G内存,你知道吗?

线上现象

线上启动,莫名多占用1G系统内存。

排查步骤

  • dump内存,并分析,无异常
  • 通过总内存,jvm设置,确定是占用了堆外内存

相关实验(本地)

复现现象

设置jvm参数

-server 
-Xms128m 
-Xmx128m

通过jconsole可以看到compressedClassSpace开辟了1G的内存空间,实际未使用那么多


优化方案一

设置元空间大小

-server 
-Xms128m 
-Xmx128m 
-XX:MetaspaceSize=128m 
-XX:MaxMetaspaceSize=128m

再次通过jconsole查看,发现compressedClassSpace和Metaspace空间大小相同


优化方案二

关闭compressedClassSpace

-server 
-Xms128m 
-Xmx128m 
-XX:MetaspaceSize=128m 
-XX:MaxMetaspaceSize=128m 
-XX:-UseCompressedClassPointers 

or

-Xms128m 
-Xmx128m 
-XX:MetaspaceSize=128m 
-XX:MaxMetaspaceSize=128m 
-XX:-UseCompressedOops 

关闭UseCompressedClassPointers或者UseCompressedOops
compressedClassSpace都会被关闭


方案三

设置CompressedClassSpaceSize大小

-Xms128m 
-Xmx128m 
-XX:CompressedClassSpaceSize=256m

总结

根据线上的现象,在本地复现,然后测试、调优,实验出以上三种方案,可以解决CompressedClassSpaceSize默认1G大小的问题。具体CompressedClassSpaceSize要根据Metaspace限定,或者根据实际情况计算后限定大小。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值