JVM(三)

jstack
对java应用,主要是堆、栈、容器来排查
容器就是tomcat
为什么要看栈?(什么情况看栈)
java应用有瓶颈,是通过查看各个线程的调用栈在等待什么或者在做什么,
若usrcpu消耗多,看看线程在做什么操作,在等待什么,那么rt时间长,也可以去分析线程,为什么会有长时间,站在线程角度,可能是发生死锁、阻塞、存在锁之间的竞争,请求资源一直等待。

可以用命令、也可以工具,命令与工具差不多。
jstack作用用于生成虚拟机当前时刻所有线程运行状态的快照
也叫threaddunmp,包括每一个线程调用栈,锁的持有情况,哪些线程在等待锁,哪些现线程持有锁,都可以看到。

jstack -l pid
jstack -l 8608 > file 重定向到一个文件看
后续把这个文件加载到分析栈的工具看

栈包含的信息:
线程名称
编号
线程类型daemon守护线程
线程优先级prio数字越大线程优先级越高、
系统优先级os
tidjvm内存的线程唯一标识
nid本地线程id,这是16进程,usrcpu高,线程号转成16进制后在栈中找nid所对应的值,对应系统tid(重点关注)
本地线程状态 waiting for monitor(有且仅有一个monitor),等待一个锁。
在这里插入图片描述
runnable正处于运行状态、waiting on condition线程正在等待某一条件发生或线程正在等待资源。
waiting for monitor entry 或 in Object.wait() 重点要去关注这个,阻塞时就处于

线程占用的内存地址、JVM线程运行状态、状态对应在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值