如何获得JVM执行过程中调用的方法名(包含Java自带的)?
也就是跟踪执行时的栈空间。
或者有什么工具推荐一下,谢谢!
1)试过java.lang.management包里的ThreadMXBean
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
ThreadInfo[] info = bean.dumpAllThreads(false, false);
for(int j = 0; j < info.length; j++){
System.out.println(info[j].getThreadName());
StackTraceElement[] trackElement = info[j].getStackTrace();
for(int i = 0; i < trackElement.length; i++){
System.out.println("class name: " + trackElement[i].getClassName() + " method name: " + trackElement[i].getMethodName());
}
}
不过只输出到main,后面就没了2)jdk内置工具jstack介绍----jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 但不知道怎么用有整过的,给个思路 谢谢了!!
也就是跟踪执行时的栈空间。
或者有什么工具推荐一下,谢谢!
1)试过java.lang.management包里的ThreadMXBean
ThreadMXBean bean = ManagementFactory.getThreadMXBean();
ThreadInfo[] info = bean.dumpAllThreads(false, false);
for(int j = 0; j < info.length; j++){
System.out.println(info[j].getThreadName());
StackTraceElement[] trackElement = info[j].getStackTrace();
for(int i = 0; i < trackElement.length; i++){
System.out.println("class name: " + trackElement[i].getClassName() + " method name: " + trackElement[i].getMethodName());
}
}
不过只输出到main,后面就没了2)jdk内置工具jstack介绍----jstack工具还可以附属到正在运行的java程序中,看到当时运行的java程序的java stack和native stack的信息, 但不知道怎么用有整过的,给个思路 谢谢了!!
发现个帖子 虽然是自问自答 但问题还是解决了
http://forums.oracle.com/forums/thread.jspa?threadID=1522114&tstart=15
如果想更直观一些,可以用jconsole,图形界面查看java进程的运行状态