JVM 内存结构 VS Java 内存模型 VS Java 对象模型

整体上

  • JVM 内存结构:和 Java 虚拟机运行时区域有关。
  • Java 内存模型:和 Java 的并发编程有关。
  • Java 对象模型:和 Java 对象在虚拟机中的表现形式有关。

JVM 内存结构

JVM 内存结构
  • 堆:保存通过 new 创建的实例对象,数组等。如果有对象没有被引用,则会被回收。
  • Java 栈:保存了各个基本类型,对象的引用。
  • 方法区:保存 static 变量,类信息,常量信息,永久应用等。
  • 本地方法栈:保存 native 方法。
  • 程序计数器:保存当前线程执行到的字节码行号,上下文切换用的。还包括下一条需要执行的执行,分支和异- 常处理。

Java 内存模型(JMM)

是一组规范,需要各个 JVM 的实现来遵守 JMM 规范,以便于开发者可以利用这些规范,更方便地开发多线程程序。

如果没有 JMM 来规范,那么可能经过不同 JVM 的不同规则的重排序之后,导致不同的虚拟机上运行的结果不一样,那是很大的问题。

JMM 最重要的三个内容:

  • 重排序
  • 可见性
  • 原子性

Java 对象模型

Java 对象模型

方法区:存储类的信息。
堆:存储类实例化的对象。
栈:存放对象引用的地方。

你可能感兴趣的:(JVM 内存结构 VS Java 内存模型 VS Java 对象模型)