[TOC]
# 介绍
获取虚拟机堆栈信息,包括线程堆栈、dump文件、c/c++方法堆栈等,封装于命令`jstack`
# 示例
~~~
import beifengtz.vmconsole.JStackCmd;
public class Test {
public static void main(String[] args)throws Exception{
JStackCmd.threadStack(8888);
}
}
~~~
# 方法
| 名称 | 参数 | 返回值 | 含义 |
| --- | --- | --- | --- |
| threadStack() | int vmId(虚拟机ID,JpsCmd可获取)| JStackResult | 除堆栈外,获取关于锁的附加信息 |
| jniStack() | int vmId(虚拟机ID,JpsCmd可获取)| JStackResult | 如果调用到本地方法的话,可以获取C/C++的堆栈 |
| threadDump() | int vmId(虚拟机ID,JpsCmd可获取)| JStackResult | 除堆栈外,获取关于锁、dump文件的附加信息 |
| run() | String[] var0(命令参数) | JStackResult | 自定义执行jstack命令 |
# 结果对象
所有可能返回对象的继承关系结构
```java
|—— beifengtz.vmconsole.entity.JvmResult
|—— beifengtz.vmconsole.entity.jstack.JStackResult
|—— beifengtz.vmconsole.entity.jstack.ThreadStack
```
## ThreadStack
| 属性 | 类型 | 含义 |
| --- | --- | --- |
| id | String | 线程id|
| state | String | 线程状态 |
| stacks | StringBuilder | 线程堆栈信息 |
|deadLocks | String | 线程死锁信息|
|~~currentJavaSP~~ | String | 当前线程全限名地址 |
| concurrentLocks | String | 并发锁信息|
## JStackResult
| 属性 | 类型 | 含义 |
| --- | --- | --- |
| deadLocks | String | 虚拟机死锁信息 |
| concurrentLocks | String | 虚拟机并发锁信息 |
| threadStacks | List\<ThreadStacks\> | 线程栈信息列表 |
| jniStack | ArrayList\<StringBuilder\> | Java及C/C++方法的堆栈信息 |
| threadDump | String | 锁、dump文件的附加信息 |