- 分类
- 虚拟机栈(vm stack)
- 本地方法栈(native method stack)
- 保存
- 基础数据类型
- 引用类型在栈分配地址, 局部变量生命周期结束后,栈空间立即回收
- 方法调用 # 一次调用一个帧(frame)
- 方法的形参, 调用完回收
- 方法引用参数, 在栈上分配地址, 调用完回收
- 方法实参,栈空间分配,调用完释放
- 特点
- 线程隔离
- 逻辑概念,可连续可不连续, 系统自动分配。栈中的字面值可共享,如int i = 3
- StackOverflowError
- 实现
- java的stack存放的是frames, frames由heap分配,所以stack内存不连续
- 只存在本地变量、返回值、调用方法,不能直接push和pop frams