以下是了解JVM堆栈区域的一些关键点-
在创建线程期间,Java虚拟机将创建一个单独的堆栈。
JVM在此堆栈上仅执行两个操作。操作是推入(即插入)和弹出(即删除)。
当前正在执行线程时,与其关联的堆栈称为运行时堆栈。
线程完成的每个方法调用,中间计算,局部变量的分配,调用参数等都作为操作存储在运行时堆栈中。
线程停止或完成执行后,将删除堆栈中的各个部分。
一旦线程完成所有调用,堆栈将变为空并被删除。
在终止线程之前,JVM破坏了与该线程关联的堆栈。
存储与线程关联的数据的堆栈专用于该特定线程,而其他线程则不可访问。
这表明堆栈中的数据是线程安全的。
与线程关联的堆栈中的每个数据都称为激活记录或堆栈帧。
注意 -JVM堆栈具有连续的内存位置不是强制性的。
激活记录/堆栈框架的结构
它由三个组成部分组成-
局部变量数组,
操作数堆栈,以及帧数据
JVM通过检查类数据来创建所需大小的堆栈框架。
操作数堆栈的功能类似于JVM的工作区—它用于存储中间计算结果。它的结构类似于本地变量数组,但可以通过在堆栈上执行push和pop操作来访问。
帧数据-它包含常量数据值和方法返回的数据。除此之外,它还包含对Exception表的引用,该表具有有关在需要捕获异常并且需要在控制台上显示相关消息时有关catch块的所有信息。