一、运行时数据区分为以下几个模块
注:其中本地方法栈、虚拟机栈、程序计数器是单线程私有,Java堆和方法区多线程共享
二、分区简单介绍
1. 虚拟机栈
虚拟机栈是由栈帧组成的,调用一个方法就往虚拟机栈中压入一个栈帧。栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。
2.程序计数器
当前线程所执行的字节码行号指示器。
3.本地方法栈
为虚拟机用到的Native方法服务。
4.Java堆
此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。也是垃圾收集器管理的主要区域。Java堆可以处于物理上不连续的内存空间,只要逻辑上是连续的即可。
5.方法区
存储信息有类信息、常量、静态变量、即时编译器编译后的代码等数据。