JVM 调优实战的鬼斧神工

JVM学习目录
1.JVM 概念简介
2.JVM 运行时内存
3.JVM算法简介
4.JVM 垃圾收集器
5.JVM 调优实战

一、JVM调整注意事项

  • JVM供应商和版本
  • 调整堆大小和垃圾回收
  • 选择垃圾回收方案
  • 客户端/服务器混合JVM
  • UNIX线程模型

二、堆大小的调整技巧

以下部分提供了调整虚拟机堆大小的一般准则:

  • 堆大小应设置为值,以使VM使用的最大内存量不超过可用物理RAM的量。如果超过该值,则操作系统将开始分页,并且性能会大大降低。VM总是使用比堆大小更多的内存。除了堆大小设置之外,还分配了内部VM功能所需的内存,VM外部的本机库以及永久生成的内存(仅对于Sun VM:存储类和方法所需的内存)。

  • 使用分代垃圾回收方案时,托儿所的大小不应超过Java堆总大小的一半。通常,堆大小的25%到40%就足够了。

  • 在生产环境中,将最小堆大小和最大堆大小设置为相同的值,以防止浪费用于不断增长和收缩堆的VM资源。这也适用于新一代堆大小(Sun)或苗圃大小(Jrockit)。
    以上说明翻译自Oracle JVM 堆大小的调整

  • 下图是对Java Host Spot VM 参数的总结
    在这里插入图片描述

三、调优实战

3.1 默认JVM参数

我们以SpringBoot项目为例,配置GC日志打印:-XX:+PrintGCDetails
在这里插入图片描述
项目刚刚启动,什么都没干就发生了Full GC ,这是不是很尴尬
在这里插入图片描述
我们在来看一下监控,小编用的监控是 Visual VM ,可以看出,初始的对大小在450MB ,最大2G,上面我们说过初始最好和最大的相等,这个也看项目的需求,这里的值如何调整呢?让我们重新配置一下,在看看监控!

在这里插入图片描述

3.2 优化JVM

接下来进行优化:
通过之前的学习,我们应该知道了垃圾收集器了,如果没有了解,请阅读,小编的JVM专区
步骤

  • 选取垃圾收集器
  • 优化堆大小
  • 调整新生代堆大小
  • 调整新生代三个区域的比例
  • 命令如下:
-XX:+PrintGCDetails -XX:+UseG1GC -XX:NewSize=521m -XX:MaxNewSize=1g -XX:SurvivorRatio=8 -Xmx2g -Xms2g

在这里插入图片描述
启动后我们发现并没有发生 Full GC 并且日志的输出非常详细
在这里插入图片描述
Visual VM 查看,可以看出配置生效,而且堆得大小很稳定,当然我这里设置的比较大,但是对比没配置的图片不难发现,没有配置的,堆一直在持续增长;
在这里插入图片描述
今天的分享就到这里,希望对大家有所帮助

关注 Java有货领取更多资料

联系小编。微信:372787553,带您进群互相学习
左侧小编微信,右侧获取免费资料
在这里插入图片描述

技术博客:https://blog.csdn.net/weixin_38937840

免费书籍:https://github.com/Dylan-haiji/Programmer-Learning-materials

SpringCloud学习代码: https://github.com/Dylan-haiji/javayh-cloud

Redis、Mongo、Rabbitmq、Kafka学习代码: https://github.com/Dylan-haiji/javayh-middleware

AlibabaCloud学习代码:https://github.com/Dylan-haiji/javayh-cloud-nacos

SpringBoot+SpringSecurity实现自定义登录学习代码:https://github.com/Dylan-haiji/javayh-distribution

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小杨同学~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值