"调用堆栈"和"线程堆栈"之间的区别

Jul*_* A. 12 java stack multithreading semantics

在Java多线程中,术语call stack和语言之间是否存在语义差异thread stack

Nat*_*hes 14

每个线程都有自己的调用堆栈,"调用堆栈"和"线程堆栈"是一回事.将其称为"线程堆栈"只是强调调用堆栈特定于线程.

Bill Venners称之为Java堆栈:

启动新线程时,Java虚拟机会为该线程创建新的Java堆栈.如前所述,Java堆栈将线程的状态存储在离散帧中.Java虚拟机只在Java Stacks上直接执行两个操作:它推送和弹出帧.

线程当前正在执行的方法是线程的当前方法.当前方法的堆栈帧是当前帧.定义当前方法的类称为当前类,当前类的常量池是当前常量池.在执行方法时,Java虚拟机会跟踪当前类和当前常量池.当虚拟机遇到对存储在堆栈帧中的数据进行操作的指令时,它会在当前帧上执行这些操作.

当线程调用Java方法时,虚拟机会创建一个新帧并将其推送到线程的Java堆栈上.然后,这个新帧成为当前帧.当该方法执行时,它使用该帧来存储参数,局部变量,中间计算和其他数据.