一,JVM运行时内存划分
线程共享区:
- 方法堆
- java堆
线程独占区:
- 虚拟机栈
- 本地方法栈
- 程序计数区
1.1 虚拟机栈
- 虚拟机栈描述的是Java方法执行的动态内存模型;
- 栈帧:每一个方法的执行都会创建一个栈帧,伴随着方法从创建(压入虚拟机栈)到执行完成(弹出虚拟机栈)。用于存储局部变量表,操作数栈,动态链接,方法出口等。栈帧包含一个方法的主要信息。
- 局部变量表:存放编译期可知的各种基本数据类型,引用类型,方法的出口地址;局部变量表的内存空间,在编译期完成分配,当进入一个方法时,这个方法,需要在帧中分配的空间时固定的,在方法运行期间不会改变局部变量表的大小。
- StackOverFlowError:通常是递归调用方法不合理,导致虚拟机栈空间不够了
2022/5/28大约 3 分钟
