JVM线上问题定位命令

导读:本篇文章讲解 JVM线上问题定位命令,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

概述

本文主要介绍下平常可能会使用到的命令:jps、jinfo、jmap、jstat、jstack

jps

jps主要是查看Java进程号,有个Java进程号后面的命令也才能发挥作用。
在这里插入图片描述
jps -help可以列出jps支持的参数,大家可以试一下
在这里插入图片描述

jinfo

在这里插入图片描述
jinfo后面跟jps打出来的java进程后,可以显示某一进程的Java System Properties(环境变量)和VM Flags(虚拟机参数)。有时候想确认线上环境的参数是否和预期的一致,可以使用该命令,该命令还可以动态配置参数。

jmap

在这里插入图片描述
jmap主要使用来生成dump文件
jmap -dump:live,format=b,file=heap.hprof 6268 ,生成dump文件我们可以使用eclipse的MAT,jdk自带的jvisualvm分析内存泄露和内存溢出问题。
当然也可以使用jhat命令查看dump文件

jstat

jstat命令用来监控指定进程的GC回收情况
在这里插入图片描述

jstack

jstack是非常有用的命令,可以查看Java进程中每一个线程的工作状态,以及每个线程栈当前的方法执行顺序。可以帮助我们定位死锁,死循环等问题。
在这里插入图片描述
图中依次可以看到线程名称mian,线程优先级prio, 线程tid,线程对应的本地线程nid,线程状态,(线程占用内存),下面可以看到当前正在调用的类名,方法名,源文件以及源文件行号。
这里要明白线程有几种状态,以及执行什么代码会出现什么状态。
1、RUNNABLE,线程处于执行中
2、BLOCKED,线程被阻塞 一般都是在等待锁。线程0获取到锁RUNNABLE状态,线程1则处于BLOCKED状态等待锁
在这里插入图片描述
3、WAITING,线程正在等待被唤醒 wait()
在这里插入图片描述
4、TIME_WAITING,线程等待一定时间唤醒 wait(time) sleep(time)
在这里插入图片描述
一般定为问题,都是会连续执行几次jstack,这样就可以对比线程的状态,来明确线程的执行情况,从而定位问题所在。

总结

上面就是JVM常用的几个命令了。一般定位线上问题还需要看主机的磁盘、CPU、内存等综合判断问题所在,涉及网络请求的问题抓包也是常见手段,还有线上日志也很重要。
线上如果出现问题的话,应该快速恢复业务,在恢复业务之前搜集好定位问题所需要的信息。

参考

jmap dump内存的命令是_线上问题定位:JVM应该知道的5个命令

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/99896.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!