Java 虚拟机 Jvm 内存模型
1. 内存模型

2. 主要存放对象实例

3. 程序计数器
程序计数器记录当前线程执行程序的位置,改变计数器的值来确定执行的下一条指令,比如循环、分支、方法跳转、异常处理,线程恢复都是依赖程序计数器来完成。
4. 方法区
主要存储一些:加载类的信息 、常量、静态变量、即时编译器编译后的代码等元数据信息。
重要区域为常量池: 常量池又分为静态常量池跟运行时常量池。
静态常量池:我们也叫class常量池,存放一些字符串、数字还有一些类以及方法。
运行时常量池:是虚拟机 (JVM) 在完成类装载操作后,将class文件中的常量池载入到内存中,并保存在方法区中。载入到内存中,也就是说将class常量池中的内容存放到运行时常量池中。
class常量池是固定的,但运行时常量池在运行时动态添入。
比如String的intern
5. 本地方法栈
本地方法栈、为虚拟机调用本地方法服务(native)。
6. 虚拟机栈
java中每创建一个方法都会有栈帧,栈帧会存在虚拟机栈中。用压栈出栈的方式进行调用方法。
栈帧又分为几点:局部变量表、操作数栈、动态连接、方法返回地址等。
7. 堆
主要存放对象实例。