JDK排查线程和内存问题

JDK自带工具排查应用线程和内存问题

查看栈信息
➤ lsof -i tcp:8081
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
java 34760 kris 443u IPv6 0x4487be0b2cca6d9b 0t0 TCP *:sunproxyadmin (LISTEN)
➤ jstack 34760 > jstack1.txt

转至元数据结尾
Created and last modified by yushengxiong on 六月 29, 2018 转至元数据起始
1、应用响应慢乃至长时间不返回,可能是线程被阻塞了,没有多余的线程来处理新的请求,此时可以使用jstack来拉取线程栈

jstack pid > jstack01.txt

查看jstack01.txt,重点关注BLOCKED状态的线程

2、当遇到应用OOM报错,内存告警,莫名其妙的重启,一般是内存问题

  1. jstat -gcutil [pid] 2000

  2. 查看gc日志(/data/log/tomcat/gc)

3)jmap -histo:live [pid]

4)jmap -dump:live, format=b,file=文件名 [pid]

5)将dump文件导出到本地使用jvisualvm来分析
JDK排查线程和内存问题