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