请问:
1,栈轨迹是什么
2,printStackTrace()方法所提供的信息可以通过getStackTrace()方法来直接访问,这个方法将返回一个由栈轨迹中的元素所构成的数组,其中每一个元素都表示栈中的一帧
其中:“栈中的一帧”是什么意思呢
谢谢
1,栈轨迹是什么
2,printStackTrace()方法所提供的信息可以通过getStackTrace()方法来直接访问,这个方法将返回一个由栈轨迹中的元素所构成的数组,其中每一个元素都表示栈中的一帧
其中:“栈中的一帧”是什么意思呢
谢谢
栈是一种数据结构后 先进先出 FIFO, 栈轨迹是栈中数据的序列
每个任务(进程)有一个栈,存放方法的调用等,在这个进程中每个函数被调用时分别从这个栈占用一段区域,称为帧(frame)。
在异常中如果printStackTrace()则会输出 这个进程调用栈的内容。
如 方法a调用方法b b调用c c调用d 如果执行a方法,当执行到d时抛出了异常则
printStackTrace()则可以看到 一个栈信息 从栈顶到栈底打印出来,d c b a 的过程。
他们由该虚拟机实例中所有线程共享,当虚拟机
装载class文件时,把类型信息放到方法区中,
当程序运行时,虚拟机把所有该程序在运行时候
创建的对象都放到堆中.当创建一个新线程时,它将得到自己的PC寄存器(程序计数器)
和一个java栈,pc寄存器存放的值指示下一条要执行的指令,
java栈则总是存储线程中java方法调用的状态(局部变量,参数,返回值,中间结果)java栈由血多java栈帧组成,一个帧包含一个java方法调用的状态.
当程序调用一个java方法时,虚拟机压入一个新的栈帧到栈中,
当方法返回时,帧从栈中弹出并抛弃.这个不太好理解,写的已经比较通俗了,慢慢看吧.