运行时数据区
Java虚拟机所管理的内存 将会包括以下几个运行时数据区域
- 程序计数器:线程私有的,是一块很小的内存空间,作为当前线程的行号指示器(记录着代码执行到第几行),程序计数器是用来记录系统下一条需要执行的字节码指令的地址。
- 虚拟机栈:线程私有的描述的是Java方法执行的线程内存模型:每个方法执行的时候,Java虚拟机都会同步创建一个栈帧,用于存储局部变量表、操作数栈、动态连接、方法出口等信息。每一个方法的调用到执行完成,都对应一个栈帧从出栈到入栈的过程。
- 本地方法栈:本地方法栈(Native Method Stacks) 与虚拟机栈所发挥的作用是非常相似的,其区别只是虚拟机栈为虚拟机执行Java方法(也就是字节码) 服务, 而本地方法栈则是为虚拟机使用到的本地(Native)方法服务。
- Java堆:Java堆是被所有线程所共享的一片区域,几乎 所有的对象实例都在这里分配内存。Java堆是垃圾收集器管理的内存区域。
- 方法区:是各个线程共享的内存区域,主要用来存储类的方法,属性等信息&#