JVM(五)之终结篇,jvm调优

在这里插入图片描述
在这里插入图片描述
jdk1.8默认垃圾收集器是ParallelGC
评价一个垃圾收集器的好坏
停顿时间+吞吐量+GC次数
CMS 使用cms作为垃圾收集器(cms适用于老年代),新生代默认会选择(ParNewGC)
不重点关注
在这里插入图片描述
改成G1
在这里插入图片描述
在这里插入图片描述
文件太多参数了,看得费劲,下面官网介绍日志中的每一个参数
GCEasy gcviewer
吞吐量和停顿时间
在这里插入图片描述
在这里插入图片描述
Mixed:表示young区和部分old区的GC
超过45%,触发并发周期,触发region区的GC
在这里插入图片描述

在这里插入图片描述
调优就是不断修改参数,寻找一个最佳点
减少GC次数

我们可以调整堆大小,看参数是否变化

设置-Xms500M -Xmx500M 初始化和最大的一样
然后堆大小增加后,吞吐量上升,GC次数下降。说明增加堆是有变化的
那我们不管什么时候都可以直接增大堆?no
观察停顿时间增加了,这是不好的方向。因为堆空间变大,存放更多垃圾,周期增长,越积越多,
G1垃圾收集器区别于其他收集器的就是可以设置停顿时间

我们不妨设置一下停顿时间,减小

XX:MaxGCPauseMillis=100(设置最大停顿时间)
看到gc次数又有所增加了,我们修改了停顿时间,导致gc次数有上升了,g1标记回收没有完成,下一次继续,导致次数增加,所以我们设置的停顿时间需要继续调整,不要将时间太小,不断尝试,寻找一个平衡点

启动并发GC是堆内存使用占比
比方45%时候触发
在这里插入图片描述
我们改成50%
-XX:InitiatingHeapOccupancyPercent=50

不断调整,找到最佳值,下面是官网文档地址,可以参考进行调优
在这里插入图片描述
不要调整young区大小,G1会自动调整young区大小
停顿时间不要太严格
设置堆内存使用比例
在这里插入图片描述
jvm调优就是不断尝试,找寻最佳参数

G1和CMS区别,为什么会诞生G1
G1有region,对堆内存进行逻辑分区,划分为一个个的region,每一个region大小相等,保留新生代,老年代,大对象,每个区域不一定非得放新生代,采用标记整理,减少空间碎片,优先收集垃圾比较多的区域,保证空间连续
Cset:存活对象移动到CSet <1%

cpu是多核,大内存可以使用G1
以前新生代和老年代是连续的,必须扫描老年代

jdk1.9默认G1垃圾收集器

高并发场景下如何进行调优(机器好,项目小无需调优)
每秒3000比交易,如何和jvm联系在一起
需要集群,机器好无所谓,如果机器不好呢
每个机器有1000单每秒
jvm设置内存多大合适
在这里插入图片描述
如何减少fullGC次数?Young适当增加,因为young区每隔一段时间就回收

什么是jvm的性能优化,如何优化
有问题就需要优化,
GC次数频繁,为什么你知道频繁,可能cpu使用率高了,首先打印GC日志,结合工具看一下是哪个gc频繁,适当增加堆内存空间,垃圾收集器可能不合适,如果垃圾收集器选择合适,调整收集器,比方G1,调整停顿时间
cpu持续飙升怎么办?为什么你看到cpu升高?top一下,看一下哪个进程,通过jstack查看线程,jmap查看堆内存,如何解决,集群,MQ,业务代码会不会有线程死锁情况,
如果发生oom?dump文件出来,分析文件,用工具MAT,减少并发
在这里插入图片描述

内存泄漏和内存溢出(OOM)区别?

内存泄漏对象没有及时回收,持续占用内存空间,内存空间浪费
由于内存泄漏慢慢会导致内存溢出

方法区的回收主要回收什么内容?

在这里插入图片描述
不可达对象一定会被回收吗?
不是,不可达对象通过finalize()方法变成不是垃圾对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值