打印堆栈
2010-12-01 17:10
85 查看
public class Trace{
public static void main(String[] args){
Thread[] list = Trace.findAllThreads();
for(Thread thread: list){
StackTraceElement[] trace = thread.getStackTrace();
for(StackTraceElement tra:trace){
System.out.println(tra.toString());
}
}
}
public static Thread[] findAllThreads() {
ThreadGroup group = Thread.currentThread().getThreadGroup();
ThreadGroup topGroup = group;
// 遍历线程组树,获取根线程组
while (group != null) {
topGroup = group;
group = group.getParent();
}
// 激活的线程数加倍
int estimatedSize = topGroup.activeCount() * 2;
Thread[] slackList = new Thread[estimatedSize];
// 获取根线程组的所有线程
int actualSize = topGroup.enumerate(slackList);
// copyintoalistthatistheexactsize
Thread[] list = new Thread[actualSize];
System.arraycopy(slackList, 0, list, 0, actualSize);
return list;
}
}
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
java.lang.Thread.getStackTrace(Thread.java:1436)
test.main(test.java:33)
public static void main(String[] args){
Thread[] list = Trace.findAllThreads();
for(Thread thread: list){
StackTraceElement[] trace = thread.getStackTrace();
for(StackTraceElement tra:trace){
System.out.println(tra.toString());
}
}
}
public static Thread[] findAllThreads() {
ThreadGroup group = Thread.currentThread().getThreadGroup();
ThreadGroup topGroup = group;
// 遍历线程组树,获取根线程组
while (group != null) {
topGroup = group;
group = group.getParent();
}
// 激活的线程数加倍
int estimatedSize = topGroup.activeCount() * 2;
Thread[] slackList = new Thread[estimatedSize];
// 获取根线程组的所有线程
int actualSize = topGroup.enumerate(slackList);
// copyintoalistthatistheexactsize
Thread[] list = new Thread[actualSize];
System.arraycopy(slackList, 0, list, 0, actualSize);
return list;
}
}
java.lang.Object.wait(Native Method)
java.lang.Object.wait(Object.java:485)
java.lang.ref.Reference$ReferenceHandler.run(Reference.java:116)
java.lang.Object.wait(Native Method)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:118)
java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:134)
java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
java.lang.Thread.getStackTrace(Thread.java:1436)
test.main(test.java:33)
相关文章推荐
- as3打印调用堆栈
- android函数调用堆栈打印方法
- android打印堆栈--自测通过
- Android下打印调试堆栈方法
- android 中native 层的打印堆栈(c++)
- C语言打印函数堆栈方法
- Android下打印调试堆栈方法
- 打印函数调用堆栈
- linux打印函数调用堆栈
- 对于invoke生成的类中堆栈跟踪打印在控制台,可链接到具体类,小bug
- PHP 打印调用函数入口地址(堆栈)
- 在linux代码中打印函数调用的堆栈的方法
- java打印调用堆栈的方式
- 打印调用堆栈
- paip.c++程序崩溃的汇编级别调试-打印堆栈-gcc gdb
- Android下打印调试堆栈方法
- 调试打印堆栈而不退出
- 堆栈打印的方法
- log中打印exception 堆栈信息
- Log技巧 打印上一个类名 调用流程 堆栈信息