jstack简介
Posted halu126
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了jstack简介相关的知识,希望对你有一定的参考价值。
jstack:Java进程中线程的堆栈信息跟踪工具
功能简介
jstack常用来打印Java进程/core文件/远程调试端口的Java线程堆栈跟踪信息,包含当前虚拟机中所有线程正在执行的方法堆栈信息的集合。
主要用来定位线程出现长时间停顿的原因,如线程间死锁、死循环、请求外部资源导致的长时间等待。
命令格式
1 jstack [ options ] pid //Java进程 2 jstack [ options ] executable core //core文件 3 jstack [ options ] [ server-id@ ] remote-hostname-or-IP //远程调试端口
其中options选项可有
选项 | 作用 |
-F | 当正常输出的请求不被响应时,强制输出线程堆栈 |
-l | 除了堆栈外,显示关于锁的附加信息 |
-m | 如果调用到本地方法的话,可以显示C/C++的堆栈信息 |
其他说明
1、When the specified process is running on a 64-bit Java Virtual Machine, you might need to specify the -J-d64 option, for example: jstack -J-d64 -m pid.
2、In mixed mode stack trace, the -m option does not work with the remote debug server.
3、In Windows Systems where the dbgeng.dll file is not present, Debugging Tools For Windows must be installed so these tools work.
样例
java线程的获得:使用jps -l,或者使用top命令查看使用cpu/memory最多的进程id,或者ps -aux | grep java
进程id的获得:top -Hp pid,找到改线程下的最繁忙的进程id(十进制要转换成16进制:printf "%x\n" tid)
jstack -l pid | grep tid
以上是关于jstack简介的主要内容,如果未能解决你的问题,请参考以下文章
Android 逆向类加载器 ClassLoader ( 类加载器源码简介 | BaseDexClassLoader | DexClassLoader | PathClassLoader )(代码片段