局部变量表
- 方法的参数越多,局部变量越多,其局部变量表就越大,每次调用占用的空间就越多(栈帧越大);
- Java栈空间的局部变量表和Class文件中的一个属性局部变量表不是一回事;
- 如果局部变量过了其作用域,那么在其作用域之后声明的局部变量就可能重用其槽位;
- 局部变量表中的变量也是垃圾回收根节点, 被其直接或间接引用的对象都不会被回收;
操作数栈
- 计算过程中变量的临时存储空间;
- 保存计算过程的中间结果;
帧数据区
- 保存着访问常量池的指针;
- 支持正常方法返回;
- 异常处理表,支持异常处理;
栈上分配
- 将线程私有的对象分配在栈上;
- 逃逸分析,用于分析方法中的对象是否是线程私有的;
- 标量替换,将对象的字段当做独立的局部变量在栈上进行分配;