jvm参数调优堆的初始和最大值一定要一致

我上次是把初始内存32M,最大内存512M,这个是时候我把初始内存改成相等,512M,我就把服务器重启一遍

-XX:+PrintGCDetails -Xmx512M –Xms512M
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseSerialGC
-XX:PermSize=32M

你们再看效果,有没有GC的回收,是不是没有,这我们就可以统计出来,0次,这就不用说了吗,结果已经看的出来了

GC回收次数是0次,那这边你们说一下,这个吞吐量大概在多少,大概范围在多少,肯定是5000以上,这个是肯定的,我估计7,8千,

差不多,清空掉,运行,你们看一下有没有GC回收,是不是没有,我们运行完毕也没有,吞吐量在5015

你们谁知道这是什么原因吗,为什么变少了,你们有没有谁知道,这个其实是软件的一个bug问题,运行的时候

怎么越变越小,这是什么原因,你们知道为什么吗,这个软件有Bug,永远只在100多里面,看到没有

是不是还在100多,这个软件有bug,你们最好不要这么测,去HTTP请求菜单点击执行,是不是已经高了

看到没有,6561次,看到效果没有,刚才变小是因为图形界面,你们不要去展示报告里面执行去看报告,图形运行的时候会影响

我们的吞吐量的,这个软件有bug,所以这个我就不说了,那你知道,6561次,吞吐量6561次,这个时候我把它清掉之后,我再来一遍,

6702次

我清掉,我在运行一次,他又会变高的,因为他有缓存这个请求的,会慢慢变高的,6626,基本上在6600左右了

这个时候可以做个总结出来,堆的初始值和最大值一致的情况下,并且堆的初始值越大就会越高,其实你们可以总结一个

结论出来,首先为什么要有一个初始内存呢,其实大家记住一点,说白了,堆的初始值要和堆的初始内存要一直,这是第一个条件,

你如果初始堆内存越大,就越高,而且你有没有发现,我现在要运行4,5遍,他才会产生一次GC回收,我们运行了多次,这一次GC

肯定不算,一般你不要把它设置满,你设置一半就行了,16G的话你设置成8G就行了,因为你还有其他的内存需要使用,所以这是

我们给你讲的一个结论出来,然后你们再想想,我设置512M,我用的是串行回收,我设置512M的时候,和初始值32M的时候,

差别有多少,差别为几次,是不是1000多次,是不是这样的,而且和我们最开始的差别多少次,差别2000多次,所以为什么有的时候

要把初始内存设大一点呢,这里就把串行这块已经讲完了,如果有人问你,JVM调优最基本的原则是什么,第一点是减少GC回收

次数,因为GC回收本身会影响程序的效率的,第二点是堆的初始值和最大值一定要一致,因为垃圾回收次数和设置堆的最大内存

无关,他是和初始堆内存大小有关系的,我已经把串行回收讲完了
调整初始堆
-XX:+PrintGCDetails -Xmx512M –Xms512M
-XX:+HeapDumpOnOutOfMemoryError
-XX:+UseSerialGC
-XX:PermSize=32M
GC回收次数0次 吞吐量6561次
结论:堆的初始值和最大堆内存一致,并且初始堆越大就会高。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值