jvm调优

文章主要讨论了JVM调优的关键指标,如吞吐量和响应时间,并针对系统慢、卡顿、OOM和死锁等问题提供了调优方法。利用Jstat监控GC,通过Jmap和Jstack分析内存与线程状态,以及借助jvisualvm和arthas等工具诊断问题,确保系统的稳定运行。
摘要由CSDN通过智能技术生成

一.概述

1.JVM调优参考量

吞吐量:指系统在单位时间内处理请求的数量。对于并发系统,通常需要用吞吐量作为性能指标。
响应时间:指系统对请求作出响应的时间。对于单用户的系统,响应时间可以很好地度量系统的性能。

2.JVM调优

调优方向:系统运行慢、卡顿、OOM、死锁等

JVM内存分区:
在这里插入图片描述
JVM垃圾回收触发机制:
在这里插入图片描述

Jstat命令
可以通过== pid 间隔时间 执行次数 ==查看JVM GC情况
在这里插入图片描述
在这里插入图片描述

二.调优

1.内存溢出OOM

排查步骤:
Jmap命令
首先我们可以通过top命令查看我们服务器java相关的进程对内存和CPU的使用情况,找到内存使用最高的java进程,通过Jmap -dump 命令可以导出dump文件,结合java自带的jvisualvm工具分析dump文件,查看各个类的使用情况,当然还有其他的分析工具,比如阿里的arthas等;
也可以通过配置JVM,在我们程序OOM时,自动导出dump文件到指定位置

-XX:+HeapDumpOnOutOfMemoryError
-XX:HeapDumpPath=./ (路径)

2.死锁

产生死锁的必要条件:

1.互斥条件
2.不可剥夺条件:进程所获得的资源在未使用完毕之前,不能被其他进程强行夺走,即只能由获得该资源的进程自己来释放(只 能是主动释放)
3.请求与保持条件:进程已经保持了至少一个资源,但又提出了新的资源请求,而该资源已被其他进程占有,此时请求进程被阻 塞,但对自己已获得的资源保持不放。
4.循环等待条件
jstack命令
jstack pid可以查看JVM线程的情况,以及死锁
在这里插入图片描述
可以看到通过jstack pid 命令JVM已经帮我找到一处死锁,并定位到了具体的代码,同样,还可以用jvisualvm自动检测死锁。找到了死锁的具体位置。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值