如何获得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.mangement包里面的东东 
      

  2.   

    http://www.517sou.net/Article/378.aspx
      

  3.   

    不是这个 
    发现个帖子 虽然是自问自答 但问题还是解决了
    http://forums.oracle.com/forums/thread.jspa?threadID=1522114&tstart=15
      

  4.   

    自己调用jstack --help查看一下帮助
    如果想更直观一些,可以用jconsole,图形界面查看java进程的运行状态