请问:
1,栈轨迹是什么
2,printStackTrace()方法所提供的信息可以通过getStackTrace()方法来直接访问,这个方法将返回一个由栈轨迹中的元素所构成的数组,其中每一个元素都表示栈中的一帧 
其中:“栈中的一帧”是什么意思呢
谢谢

解决方案 »

  1.   


    栈是一种数据结构后 先进先出 FIFO, 栈轨迹是栈中数据的序列
    每个任务(进程)有一个栈,存放方法的调用等,在这个进程中每个函数被调用时分别从这个栈占用一段区域,称为帧(frame)。
    在异常中如果printStackTrace()则会输出 这个进程调用栈的内容。
    如 方法a调用方法b b调用c  c调用d 如果执行a方法,当执行到d时抛出了异常则
    printStackTrace()则可以看到 一个栈信息 从栈顶到栈底打印出来,d c b a 的过程。
      

  2.   

    http://www.lihuasoft.net/article/show.php?id=2171 这儿有个很详细的讲解。
      

  3.   

    启动一个java程序会产生一个java虚拟机实例.每个java虚拟机实例有一个方法区以及一个堆,
    他们由该虚拟机实例中所有线程共享,当虚拟机
    装载class文件时,把类型信息放到方法区中,
    当程序运行时,虚拟机把所有该程序在运行时候
    创建的对象都放到堆中.当创建一个新线程时,它将得到自己的PC寄存器(程序计数器)
    和一个java栈,pc寄存器存放的值指示下一条要执行的指令,
    java栈则总是存储线程中java方法调用的状态(局部变量,参数,返回值,中间结果)java栈由血多java栈帧组成,一个帧包含一个java方法调用的状态.
    当程序调用一个java方法时,虚拟机压入一个新的栈帧到栈中,
    当方法返回时,帧从栈中弹出并抛弃.这个不太好理解,写的已经比较通俗了,慢慢看吧.