美文网首页
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