“调用堆栈”和“线程堆栈”之间的区别
2022-09-04 01:45:12
在 Java 多线程中,术语 和 之间是否存在语义差异?call stack
thread stack
在 Java 多线程中,术语 和 之间是否存在语义差异?call stack
thread stack
每个线程都有自己的调用堆栈,“调用堆栈”和“线程堆栈”是一回事。将其称为“线程堆栈”只是强调调用堆栈特定于线程。
启动新线程时,Java 虚拟机将为该线程创建新的 Java 堆栈。如前所述,Java 堆栈将线程的状态存储在离散帧中。Java 虚拟机仅直接在 Java 堆栈上执行两个操作:推送和弹出帧。
线程当前正在执行的方法就是线程的当前方法。当前方法的堆栈帧是当前帧。在其中定义当前方法的类称为 current 类,当前类的常量池称为当前常量池。在执行方法时,Java 虚拟机会跟踪当前类和当前常量池。当虚拟机遇到对堆栈帧中存储的数据进行操作的指令时,它会在当前帧上执行这些操作。
当线程调用 Java 方法时,虚拟机将创建一个新帧并将其推送到线程的 Java 堆栈上。然后,此新帧将成为当前帧。当该方法执行时,它使用帧来存储参数、局部变量、中间计算和其他数据。