-
程序计数器
基本概念:程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器。在Java虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,它是程序控制流的指示器,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器来完成。
线程私有的内存区域。
唯一一个没有规定任何的OOM情况的区域。
-
Java虚拟机栈
基本概念:Java方法执行的线程内存模型:每个方法被执行的时候,Java虚拟机都会同步创建一个栈帧用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法被调用直至执行完毕的过程,就对应着一个栈帧在虚拟机栈中从入栈到出栈的过程。
线程私有的内存区域。
该内存区域会有两类异常状况:StackOverflowError以及OOM。
-
本地方法栈
基本概念:为本地(Native)方法服务。
线程私有的内存区域。
该内存区域会有两类异常状况:StackOverflowError以及OOM。
-
Java堆
基本概念:存放对象实例,Java世界里几乎所有的对象实例都会在这里分配内存。
线程共享的内存区域。
该内存区域会有一类异常状况:OOM。
-
方法区
基本概念:用于存储已被虚拟机加载的类型信息、常量、静态变量、即时编译器编译后的代码缓存等数据。
线程共享的内存区域。
该内存区域会有一类异常状况:OOM。