jdk1.8限制内存参数

阿里云1000元通用代金券点此领取

centos7上java应用使用 java -jar -Xms512m -Xmx512m 参数启动,限制不了内存,很快就会超过512m这个数,而且
还在不停的增长,大概在1.7G就会停止

增加各种参数-Xms512m -Xmx512m -XX:MetaspaceSize=200m -XX:MaxMetaspaceSize=200m -XX:MaxDirectMemorySize=128m -Xss256K -XX:+DisableExplicitGC -XX:SurvivorRatio=3 -XX:+UseAdaptiveSizePolicy -XX:ParallelGCThreads=2 -XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:+CMSParallelRemarkEnabled -XX:CMSFullGCsBeforeCompaction=0 -XX:+CMSClassUnloadingEnabled -XX:LargePageSizeInBytes=128M -XX:+UseFastAccessorMethods -XX:+UseCMSInitiatingOccupancyOnly都没有办法限制

从prometheus监控上看,heap,noheap内存加起来占用只有500M

安装jprofilter工具查看,有一个Compressed class space空间,占了1G

结果jdk1.8默认就打开了-XX:+UseCompressedClassPointers 这个参数,并且设置为1G。这个内存大小可通过-XX:CompressedClassSpaceSize参数来控制

参数作用是设置Klass Metaspace的大小,默认1G

Klass Metaspace就是用来存klass的,klass是class文件在jvm里的运行时数据结构,没有开启压缩指针,就不会有-XX:CompressedClassSpaceSize=1g这块内存,但是jdk1.8里应该是默认开启的。并且,如果这块内存会如果没有满会一直增加。

将启动参数改为java -jar -server -Xms512m -Xmx512m -XX:CompressedClassSpaceSize=128m -XX:MetaspaceSize=200m -XX:MaxMetaspaceSize=200m ,最终内存大小稳定在700多M,这里是512m+128m,没有再次出现持续上涨的情况

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值