JAVA运行时数据区域

109 阅读1分钟

运行时数据区域

ps:JDK8中方法区被移除,取而代之的是元数据区域。

1.程序计数器

当前线程所执行的字节码指示器。(线程私有)

  • JAVA方法:记录正在执行的虚拟机字节码指令地址。
  • 本地方法:计数器为空。(本地方法是c/c++实现的,不会产生相应的字节码,所以计数器为空)

异常:唯一一个不存在异常的区域。

2.虚拟机栈

JAVA方法执行的线程内存模型。(线程私有)

每一个方法都有一个栈帧。

栈帧:

  1. 局部变量表
  2. 操作数栈
  3. 动态连接
  4. 方法出口

异常:StackOverFlowError OutOfMemoryError

3.本地方法栈

使用本地方法服务(主要c/c++实现) 线程私有

异常:StackOverFlowError OutOfMemoryError

4.堆

存放对象实例(线程共享)

异常: OutOfMemoryError

5.方法区

存储被虚拟机加载的类型信息、常量、静态变量、即时编译后的代码缓存数据。

异常: OutOfMemoryError