什么是java内存模型(Java Memory Model,JMM)

版权声明:未经允许禁止转载 https://blog.csdn.net/weixin_38481963/article/details/87712228

之前在看关于java内存模型的相关博客时,感觉有些云里雾里,看完之后,一直无法给java内存模型下一个定义。导致一直对这个概念有些模糊,理解其相关内容也不太容易。

然后,我从网上搜罗了各种关于,java内存模型的概念,这里做一个总结,希望对正在学习的人一个参考。

首先看一下,维基百科给的描述:
在这里插入图片描述
上面说: java内存模型描述了java编程语言中的线程是如何通过内存进行交互的。

还有说:Java内存模型指定了不同线程如何以及何时可以通过其他线程查看共享变量的值。

内存模型的概念:

为了保证共享内存的正确性(可见性、有序性、原子性),内存模型定义了共享内存系统中多线程程序读写操作行为的规范。

通过内存模型的概念来定义java内存模型:

Java 内存模型就是一种符合内存模型规范的,屏蔽了各种硬件和操作系统的访问差异的,保证了 Java 程序在各种平台下对内存的访问都能保证效果一致的机制及规范。

在这里可以总结一下:上面对java内存模型的定义,包括以下几个方面

  1. java内存模型是一种机制及规范
  2. java内存模型是针对 多线程读写内存 而制定的规范
  3. java内存模型依然保证了跨平台性

关于java内存模型还有几点要记录一下:

  1. java内存模型规定所有变量都存储在主内存中,所有线程可访问
  2. 每个线程还有自己的工作内存,线程对变量的操作必须在工作内存中进行
  3. 线程要将变量从主内存拷贝到工作内存中,再进行操作
  4. 线程执行完后,要将工作内存中的变量写回主内存

更详细的关于java内存模型的内容,可以参考第3和第4个参考内容。

参考:https://en.wikipedia.org/wiki/Java_memory_model
参考:http://tutorials.jenkov.com/java-concurrency/java-memory-model.html
参考:https://blog.csdn.net/gupao123456/article/details/81221641
参考:https://blog.csdn.net/suifeng3051/article/details/52611310

猜你喜欢

转载自blog.csdn.net/weixin_38481963/article/details/87712228