深入理解java内存:深入理解Java虚拟机之图解Java内存区域与内存溢出异常
深入理解java内存:深入理解Java虚拟机之图解Java内存区域与内存溢出异常
Java内存区域与内存溢出异常运行时数据区域 程序计数器- 用于记录从内存执行的下一条指令的地址,线程私有的一小块内存,也是唯一不会报出OOM异常的区域
- Java虚拟机栈(Java Virtual Machine Stack)是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程
- 如果线程请求的栈深度大于虚拟机所允许的深度,将抛出 StackOverflowError 异常
- 如果Java虚拟机栈容量可以动态扩展,当栈扩展时无法申请到足够的内存会抛出 OutOfMemoryError 异常