一、官方解读:
jstack prints Java stack traces of Java threads for a given Java process or core file or a remote debug server.
For each Java frame, the full class name, method name, 'bci' (byte code index) and line number, if available, are printed.
With the -m option, jstack prints both Java and native frames of all threads along with the 'pc' (program counter).
采用jstack默认命令,仅输出Java frame(Java帧),对于每一个java frame,如果可用,完整类名、方法名、字节码索引(bci)和行号都会被输出;
采用附带-m参数,jstack会将所有线程的java frame和native frame信息都打印出来,并且附带PC信息输出
二、获取命令:
jstack <pid> =>
"ContainerBackgroundProcessor[StandardEngine[Tomcat]]" #18 daemon prio=5 os_prio=0 tid=0x00007fb028f26000 nid=0xc58 waiting on condition [0x00007fafc0376000]
java.lang.Thread.State: TIMED_WAITING (sleeping)
at java.lang.Thread.sleep(Native Method)
at org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run(ContainerBase.java:1357)
at java.lang.Thread.run(Thread.java:745)
jstack -m <pid> =>
>>>Interpreted Frame
----------------- 3160 -----------------
0x00007fb02e6ced12 __pthread_cond_timedwait + 0x132
0x00007fb02d819d63 _ZN2os5sleepEP6Threadlb + 0x283
0x00007fb02d61b8d2 JVM_Sleep + 0x3b2
0x00007fb019b67c31 <Unknown compiled code>
0x00007fb01900798d * org.apache.catalina.core.ContainerBase$ContainerBackgroundProcessor.run() bci:46 line:1357 (Interpreted frame)
0x00007fb0190079d2 * java.lang.Thread.run() bci:11 line:745 (Interpreted frame)
0x00007fb0190004e7 <StubRoutines>
0x00007fb02d588616 _ZN9JavaCalls11call_helperEP9JavaValueP12methodHandleP17JavaCallArgumentsP6Thread + 0x1056
0x00007fb02d588b21 _ZN9JavaCalls12call_virtualEP9JavaValue11KlassHandleP6SymbolS4_P17JavaCallArgumentsP6Thread + 0x321
0x00007fb02d588fc7 _ZN9JavaCalls12call_virtualEP9JavaValue6Handle11KlassHandleP6Symbol