整体上
- JVM 内存结构:和 Java 虚拟机运行时区域有关。
- Java 内存模型:和 Java 的并发编程有关。
- Java 对象模型:和 Java 对象在虚拟机中的表现形式有关。
JVM 内存结构
JVM 内存结构
- 堆:保存通过 new 创建的实例对象,数组等。如果有对象没有被引用,则会被回收。
- Java 栈:保存了各个基本类型,对象的引用。
- 方法区:保存 static 变量,类信息,常量信息,永久应用等。
- 本地方法栈:保存 native 方法。
- 程序计数器:保存当前线程执行到的字节码行号,上下文切换用的。还包括下一条需要执行的执行,分支和异- 常处理。
Java 内存模型(JMM)
是一组规范,需要各个 JVM 的实现来遵守 JMM 规范,以便于开发者可以利用这些规范,更方便地开发多线程程序。
如果没有 JMM 来规范,那么可能经过不同 JVM 的不同规则的重排序之后,导致不同的虚拟机上运行的结果不一样,那是很大的问题。
JMM 最重要的三个内容:
- 重排序
- 可见性
- 原子性
Java 对象模型
Java 对象模型
方法区:存储类的信息。
堆:存储类实例化的对象。
栈:存放对象引用的地方。