Java运行数据区域:
- 方法区
- java堆
- 虚拟机栈
- 本地方法栈
- 程序计数器
方法区域堆为内存共享区域,虚拟机栈、本地方法栈和程序计数器为线程私有
方法区:
存储被虚拟机加载类的信息、常量、静态变量、即时编译器编译后的代码数据等。
运行时常量池:
Class文件除了有类的版本、字段、方法、接口等描述信息外,还有一项是常量池,用于存放编译期生成的字面量和符号引用。
堆(Garbage Collected Heap,GC堆):
堆是垃圾收集的主要区域,存放对象实例,所有对象实例与数组都在堆上分配,java对还可以分为新生代与老年代,细致可以划分为Eden,Form Survivor,To Survivor
虚拟机栈:
线程私有,描述Java方法的内存模型,每个方法执行时会创建栈帧用于存储局部变量表,操作数栈,动态链接,方法出口等。每个方法从调用到完成就对应着一个栈帧在虚拟机栈中进栈出栈的过程。
本地方法栈:
与虚拟机栈功能类似,为Native服务。
程序计数器:
来选取下一个执行的指令,分支、循环、跳转、异常处理、线程恢复等基础功能。