一 Java虚拟机栈是什么?
Java虚拟机栈(Java Virtual Machine Stack),早期也叫Java栈。每个线程在创建时都会创建一个虚拟机栈,其内部保存一个个的栈帧(Stack Frame),对应着一次次的Java方法调用。
是线程私有的
二 生命周期
生命周期和线程一致。
三 作用
主管Java程序的运行,它保存方法的局部变量、部分结果,并参与方法的调用和返回。
栈的特点(优点)
- 栈是一种快读有效的分配存储方式,访问速度仅次于程序计数器
- JVM直接对Java栈的操作只有两个
- 每个方法执行,伴随着进栈(入栈,压栈)
- 执行结束后的出展工作
- 对于栈来说不存在垃圾回收问题(GC),但是存在(OOM)内存溢出
栈是运行时的单位,而堆是存储的单位
即:栈解决程序的运行问题,即程序如何执行,或者说如何处理数据。堆解决的是数据存储的问题,即数据怎么放,放在哪儿。
栈中可能出现的异常
- StackOverflowError (栈大小固定的时候,如果空间不足就出现了)
- OutOfMemoryError (如果栈大小是动态的,但是内存不足了,就会出现)