自学内容网 自学内容网

linux 进程堆栈分析

1.进程pid

jsp -l | grep appName
或
ps -ef | grep appName 

2.查看cpu

top -c pid

ps -mp pid-o THREAD,tid,time  /  top -H -p pid  #打印出进程对应的线程id及运行时间time

printf '%x\n' 线程id

3.查看gc

jstat -gcutil | grep pid 500

jstat -class pid

4.查看进程日志

jstack -l pid /   jstack -F pid

jstack -l pid >> dumpfile

jstack pid > stack.log

jstack 14760 | grep -a 0x39af -C20 --color

JAVA jstack日志文件中有以下几种状态需要关注的:
1.死锁,Deadlock,线程死锁;
2.执行中,Runnable,线程执行过程中可能会遇到第三方IO等阻塞或循环,仍需要关注;
3.等待资源, Waiting on condition,线程等待条件,可能是在等待网络资源响应请求,具体需结合栈信息stacktrace进行分析;
4.等待获取监视器,Waiting on monitor entry,一般是互斥锁实现线程同步;
5.条件等待/定时等待,Object.wait() 或 TIMED_WAITING,Object.wait()是让当前线程阻塞,并出让当前线程的拥有的Object锁,直到被持有Object锁的其它线程调用Object.notify()唤醒才继续执行
6.停止/停止中:Parked/Parking

5.jmap

jmap -dump:format=b,file=dump.phrof <pid>


原文地址:https://blog.csdn.net/yy1209357299/article/details/140303618

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!