注意
JVM内存模型 和 Java语言内存模型(JMM)是有区别的。JMM偏向并发编程。
运行时数据区
1. 方法区
别称:永久代,元空间。
1.2 常量池
存放编译期
生成的各种字面量
和符号引用
。这部分内容在类加载后
进入方法区的常量池存放。
2. 堆
唯一目的就是存放对象实例
。
3. 虚拟机栈(线程栈)
每个方法
执行的同时会创建一个栈帧(Stack Frame)
。
3.4局部变量表
局部变量表所需内存空间在编译期
完成分配。
3.4.3 returnAddress类型
指向了一条字节码指令的地址
4. 本地方法栈
为Native方法服务。
5. 程序计数器
当前线程
所执行的字节码
的行号
指示器。