美文网首页
Java内存模型

Java内存模型

作者: 隨筆塗鴉 | 来源:发表于2020-10-21 13:32 被阅读0次

参考资料:
维基百科-JMM
深入理解 Java 内存模型-程晓明

维基百科:

JMM(Java内存模型):Java Memory Model,描述了 Java 编程语言中的线程如何通过内存进行交互。JMM 提供了 Java 编程语言的语义,同时描述了代码的单线程执行。
最初的 JMM 于1995年开发,是不完善的、无法进行许多运行时优化的、无法充分保障代码安全。新版 JMM 由 JCP(Java Community Process)通过 JSR-133(Java Specification Request)生效,在 Java 5.0 实现。

注意:JMM ≠ JVM!

JVM(Java虚拟机):Java Virtual Machine,是一个能够运行 Java 程序,以及用其他语言编写的、且能被编译为 Java 字节码的虚拟机。JVM 的实现细节通过规范来描述。规范确保了 Java 程序在不同平台的通用性,所以使用 JDK 的程序员无需关心底层硬件平台的特性。

JVM 的规范包括:

  1. 类加载器(Class Loader)
  2. 虚拟机架构/JVM 架构*
  3. 字节码指令
  4. JVM 语言
  5. 字节码验证器
  6. 字节码解释器和 JIT 编译器
Java 7 的 JVM 架构

并发编程两个问题:

  1. 线程间如何通信(线程间交换信息)?
  2. 线程间如何同步(控制线程间操作发生的相对顺序)?

命令式编程线程间通信机制:

  • ①共享内存:
    隐式通信(读写内存公共状态)
    显式同步(指定代码互斥执行)
  • ②消息传递:
    显式通信(主动发送消息)
    隐式同步(消息先收后发)

Java 并发采用共享内存模型,Java 线程隐式通信,通信过程透明,可能遇到内存可见性问题。

JMM 抽象示意图

相关文章

网友评论

      本文标题:Java内存模型

      本文链接:https://www.haomeiwen.com/subject/zmwsmktx.html