快捷搜索:  汽车  科技

深入理解java内存:深入理解Java虚拟机之图解Java内存区域与内存溢出异常

深入理解java内存:深入理解Java虚拟机之图解Java内存区域与内存溢出异常

Java内存区域与内存溢出异常运行时数据区域

深入理解java内存:深入理解Java虚拟机之图解Java内存区域与内存溢出异常(1)

程序计数器
  • 用于记录从内存执行的下一条指令的地址,线程私有的一小块内存,也是唯一不会报出OOM异常的区域

深入理解java内存:深入理解Java虚拟机之图解Java内存区域与内存溢出异常(2)

Java虚拟机栈
  • Java虚拟机栈(Java Virtual Machine Stack)是线程私有的,它的生命周期与线程相同。虚拟机栈描述的是Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧(Stack Frame)用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程

深入理解java内存:深入理解Java虚拟机之图解Java内存区域与内存溢出异常(3)

  • 如果线程请求的栈深度大于虚拟机所允许的深度,将抛出 StackOverflowError 异常

深入理解java内存:深入理解Java虚拟机之图解Java内存区域与内存溢出异常(4)

  • 如果Java虚拟机栈容量可以动态扩展,当栈扩展时无法申请到足够的内存会抛出 OutOfMemoryError 异常

深入理解java内存:深入理解Java虚拟机之图解Java内存区域与内存溢出异常(5)

猜您喜欢: