4

我看到它总是被称为 Java-Memory-Model,但到目前为止,我本能地认为它适用于整个 JVM 生态系统。

它是否仅适用于 Java 创建的应用程序,或者任何字节码 JVM 兼容的可执行文件也可以享受它的保证?

我已经通过“内存模型”查看了 JVM 规范,但找不到太多关于它的信息。另一方面,Java 规范对它进行了详尽的描述,给我留下的印象是内存模型是特定于 Java 的。

谢谢

4

1 回答 1

4

从技术上讲,Java 内存模型仅针对 Java,并且指的是 Java 构造(同步的、易失的、最终的……)。但是 JMM 的执行通过特定的字节码指令委托给 JVM。

例如,同步块转换为 monitorenter / monitorexit 字节码指令。

所以理论上任何兼容JVM的语言都可以定义特定的内存模型(只要可以基于JMM来描述)并产生合适的字节码。

在实践中,有一些直接的等价物,例如 Scala@volatile或 Clojure 的volatile-mutable

于 2013-10-26T15:49:02.767 回答