jstack命令

懵懂的女人 提交于 2020-01-24 04:21:49

目录

0.查看系统位数

1.查看java进程ID

2.查看进程中的线程ID

3.将线程ID转换成16进制

4.jstack生成当前时刻线程快照


0.查看系统位数

Linux:getconf LONG_BIT

HP-UX:getconf KERNEL_BITS

1.查看java进程ID

使用jps、ps -ef | grep java查看当前java进程的pid,严重情况下可以使用top命令查看当前系统cpu/内存使用率最高的进程pid。

2.查看进程中的线程ID

使用命令查看进程里面占用最多的资源的线程:

Linux:top -Hp ${pid}、pstree -p ${pid}

HP-UX:tusc

3.将线程ID转换成16进制

使用命令把线程tid转换成16进制数。

printf "%x\n" ${tid}

4.jstack生成当前时刻线程快照

(threaddump,即当前进程中所有线程的信息)

使用命令查询该线程阻塞的地方:

【32位机器】jstack -l ${pid} >>jstack.log

【64位机器】jstack -J-d64 -l ${pid} >>jstack.log

jstack更多详细用法可以查看官方说明:

http://docs.oracle.com/javase/7/docs/technotes/tools/share/jstack.html

 

HP-UX进程占用CPU过高分析

1、用pstack -p ${pid} 查看进程的堆栈信息。
2、用glance查看这个线程的cpu,先按s键,输入进程id,在按G键可以查看每个线程占用CPU

 

系统中进程查看:

Linux系统中可以使用strace / ltrace工具,在HPUX中可以使用tusc / kiinfo工具。

 

Java 线程数多少是受 max user processes 控制,max user processes 是配置在/etc/security/limits.conf

或者执行命令ulimit -a查看

 

检查 使用 ps -fe |grep programname 查看获得进程的pid,再使用 ps -Lf pid 查看对应进程下的线程数.

查看最大线程数:cat /proc/sys/kernel/threads-max

ps -eLf |grep pid|grep -v grep

 

使用HP-UX的 lsof  -i |grep ${pid}可以查到程序名,进程号

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!