JVM 虚拟机栈

虚拟机栈 : 保存每个 Java 方法调用状态

  • 每次方法调用,都有对应的栈帧 ,压入栈
  • 每次方法调用结束后,都有对应栈帧,弹出栈

栈/ 栈帧 :

  • 栈 : 由一个个栈帧组成
void a(){
    b();
} 

void b(){
    c();
} 

void c(){
}

image.png

栈帧包含 :

  • 局部变量表 (Local Variables) : 局部变量 , 方法参数
  • 操作数栈 (Operand Stack) : 压栈存储操作数
  • 动态链接 ((Areference to the run-time constant pool) : 符号引用指向运行时常量池的方法引用
  • 方法返回地址 (Return Address) : 返回字节码指令 ; 异常信息

image.png

栈可能报两种错误:

  • 当线程请求栈的深度 > 虚拟机栈的最大深度时,就报 StackOverFlowError
  • 当动态扩展栈 , 无法申请新内存空间时,就报 OutOfMemoryError

栈指向堆

栈中元素指向堆中的对象 : 在栈帧中有个变量,类型为引用类型,如 : Object obj=new Object()

image.png

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐