【JVM调优总结】

JVM调优需要关注的点主要是有三个吧。

第一就是去减少垃圾回收的次数
第二就是去减少垃圾回收的时间
第三就是去减少垃圾回收导致系统STW的时间。

【减少垃圾回收的次数】
像这个减少垃圾回收的次数的话,我们可以考虑将堆内存设的尽量大一些,比如说一个8G内存的服务器,我们可以把堆大小设为4个G。
再者如果你堆的初始大小和最大大小不一样的话,JVM在垃圾回收后就会动态调整堆的大小,为了避免堆内存出现频繁震荡导致系统性能下降,
我们可以通过-Xms和-Xmx两个参数把堆的初始大小和最大大小设成一样。
还有为了避免年轻代频繁的发生垃圾回收,我们可以把年轻代的内存也设的大一些,比如说直接设置为整个堆内存的一半,堆内存4个G,年轻代就设成2个G。

【提升垃圾回收的速度】
像提升垃圾回收的速度这块呢,我们可以让年轻代和老年代都使用并行垃圾收集器。
并行垃圾收集器是多线程的,而且吞吐量比较高,这样一来就减少了垃圾回收花费的时间。
(通过–XX:+UseParallelGC和–XX:+UseParallelOldGC参数设置)

还有我们可以把垃圾回收的线程数设的多一点,比如说把垃圾回收的线程数设置为和CPU核心数相等。这样就可以充分的利用CPU去提升咱们垃圾回收的速度。
(使用–XX:ParallelGCThreads参数去设置)

【减少垃圾回收的停顿时间】
减少垃圾回收的停顿时间这块呢,我们可以使用比较关注系统停顿的CMS垃圾收集器,再者为了减少Full GC的次数,我们应该想办法尽可能将对象留在年轻代,
因为年轻代Minor GC要比年老代的Full GC成本小的多。但是这个CMS垃圾收集器是老年代垃圾收集器,它只能和Serial或者是ParNew两个年轻代垃圾收集器配合,
因为Serial是单线程垃圾收集器,效率比较低,所以我们把年轻代的垃圾收集器设置为并行垃圾收集器ParNew。
(–XX:+UseParNewGC:年轻代使用并行垃圾收集器;)

然后把老年代的垃圾收集器设为CMS,这样就可以尽可能的去降低我们垃圾回收时导致的停顿时间了。
(–XX:+UseConcMarkSweepGC:年老代使用CMS收集器)

再者我们可以把垃圾回收的线程数设的多一些,这样一来就可以尽可能的去提升垃圾回收速度,减少停顿时间。
(比如–XX:ParallelGCThreads=20:设置20个线程进行垃圾回收;)

还有些时候为了防止因为Survivor区空间不够大,一些短命的对象直接进入年老代,我们可以把Suvivor区适当的调大一些,尽可能的在年轻代就把那些短命对象回收掉。

还有因为默认情况下Suvivor区的空间使用率超过了50%了之后对象就直接会晋升到老年代,为了尽可能的把对象尽量留在年轻代,
我们可以将Suvivor区的可使用率设置的高一些比如说80%,,这样只有Survivor的使用率达到了80%对象才会晋升到老年代。
(–XX:TargetSurvivorRatio=90:设置 Survivor 区的可使用率。)

最后一个就是咱们可以把对象从年轻代晋升到老年代的年龄设大一些,因为默认情况下年轻代晋升到老年代的年龄是15,
也就是说一个对象经过15次Minor GC后依然存活就会进入年老代。咱们把这个年龄调大一些的目的也是让对象尽可能的留在年轻代。
(–XX:MaxTenuringThreshold:设置年轻对象晋升到年老代的年龄。)(任期内 入口,门槛)

当然我刚才说了这么多都是没有使用G1垃圾收集器去对JVM进行调优,如果使用的是G1垃圾收集器进行调优的话就比较简单了,
只需要设置堆的最大大小和垃圾回收最大停顿时间就OK,剩下的事就可以交给G1来做了。


【Tomcat调优总结】************


像我了解到的和之前进行过的Tomcat优化主要是通过两方面进行优化,
第一方面可以通过调整Tomcat自身的配置来进行优化(比如说禁用AJP服务啊,开启线程池啊,设置连接器的运行模式为NIO2啊),

第二方面可以通过调整Tomcat的JVM运行参数来进行优化(比如说调整堆的大小和年轻代的大小或者直接设置垃圾回收器为G1垃圾回收器,
当然如果是使用了G1垃圾回收器,我们就不需要手动的去设置年轻代的大小了)。当然,对Tomcat性能优化需要不断的进行调整参数,然后测试结果,
有时候我们还需要借助GC可视化工具来看GC的情况,再帮我们做出决策应该调整哪些参数。
【如果细问Tomcat怎么通过调整JVM运行参数来调优,就把上面的JVM调优总结一说!!!】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值