jvm-虚拟机栈(java栈)

1:JVM虚拟机栈是什么?

  java虚拟机栈(java virtual machine stack) ,早期也叫java栈,每个线程在创建是都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应这一次次的java方法调用。

 

2:生命周期:生命周期和线程一致

 

3:作用:

  主管java程序的运行,它保存方法的局部变量、部分结果,并参与方法的调用和返回。

 

 4:栈的特点(优点)

   1)栈是一种快速有效的分配存储方式,访问速度仅次于PC程序计数器。

   2)JVM直接对java栈的操作只有两个:

         a:每个方法执行,伴随着进栈(入栈、压栈)

         c:执行结束后的出栈工作

  3)对于栈来说,不存在垃圾回收问题

 

5:栈的内部结构:

     1)局部变量表

     2)操作数栈

     3)动态链接(或指向运行时常量池的方法引用)

     4)方法返回地址

 

6:栈的运行原理:

   1):不同线程的栈帧是不允许互相调用的,即不可能一个栈帧调用另一个栈帧。不存在安全问题

   2):先进先出

 

 下一遍:栈的内部结构之局部变量表

 

扩展(也是重要点):何时出现StackOverFlowError?

答:方法运行时,进栈的时候,如果栈的剩余内存大小,小于下一次进栈的数据,那么会抛出 StackOverFlowError

      解决办法:设置栈的大小--》指令 -Xss size ,比如: -Xss250m      默认是使用字节单位,可以在size后面跟上M(MB的简写)、K(KB的简写),大小不区分

posted @ 2021-07-11 22:43  QH.Thomas  阅读(164)  评论(0编辑  收藏  举报