Java虚拟机-调优案例

如何进行虚拟机性能调优?

知识,工具,数据,经验。首先要有基础的Java虚拟机知识,借助专业的监控工具,和监控的数据,再融合自己已有的经验做出问题定位,并解决问题。

1.案例一

场景:一个考核系统,员工可以浏览自己的所有考核项,有图表展示。
环境:内存64G。
问题:经常有用户反映长时间出现卡顿的现象。
处理思路:通过内存监控工具发现经常会发生FullGC,由于系统中经常创建大对象,所以直接会在老年代分配内存,导致老年代内存不够,发生FullGC,堆内存又比较大垃圾收集的时间就非常长,导致有卡顿现象。
解决方案:部署多个web容器,每个web容器的堆内存设置为4G,减小每个web容器的堆内存。

总结经验:如果经常要创建大对象,建议堆内存设置不要太大。

2.案例二
场景:简单数据抓取系统,抓取网站上的一些数据,分发到其他应用。
环境:2G内存。
问题:不定期出现内存溢出,把内存加大不管用,导出堆转储快照信息,没有任何信息,内存监控,正常。

处理思路:应用使用到了nio,会在堆外内存分配空间,又因为堆内存分配较大,堆外内存较小,所以会把堆外内存撑爆。

3.案例三
场景:物联网应用,家庭中有大量终端设配的数据需要服务器处理。
问题:JVM崩溃。

处理思路:JVM崩溃是由于任务大量堆积来不及处理,所以可以加一个任务队列,以生产者消费者模式来处理任务。

猜你喜欢

转载自blog.csdn.net/qq_22866497/article/details/80536905
今日推荐