Java内存模型只是Java范围还是实际上是JVM范围的?

时间:2013-10-26 13:39:16

标签: java jvm java-memory-model

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

它是否仅适用于Java创建的应用程序,或者是否符合JVM标准的任何字节码可执行文件?

我已经通过“内存模型”查看了JVM规范,并且找不到太多关于它的内容。另一方面,java规范彻底描述了它,让我觉得内存模型是Java特定的。

由于

1 个答案:

答案 0 :(得分:4)

从技术上讲,Java内存模型仅针对Java,并且是指Java构造(synchronized,volatile,final ...)。但是JMM的强制执行是通过特定的字节码指令委托给JVM的。

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

因此,任何JVM兼容语言理论上都可以定义特定的内存模型(只要它可以基于JMM进行描述)并生成适当的字节码。

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