JVM内存模型和JAVA内存模型的区别

前言

很多人都以为JAVA内存模型就是JVM内存模式,其实二者是不同的概念,本文针对此,主要讲解JVM内存模型和JAVA内存模型的区别。

正文

其实本身二者就是不同的概念,在此我分开来讲。

JVM内存模型

JVM内存模式主要分为:程序计数器、JAVA虚拟机栈、本地方法栈、堆和方法区,其中JDK1.8之前方法区的实现为永生代,而JDK1.8之后方法区的实现转为元空间。
各个内存区域的作用在很多博客和书籍上都有介绍,这里就不做赘述(如读者想进一步了解JVM方面的知识,可以看周志明的《深入拆解JVM》)。

Java内存模型

Java内存模型即Java Memory Model(JMM)。
JMM并不真实存在,而只是一个抽象的概念。JMM是和多线程相关的,更准确来说,JMM描述了一组规则或规范,这个规范定义了一个线程对共享变量的写入时对另一个线程是可见的。

Java的多线程之间是通过共享内存进行通信的,而由于采用共享内存进行通信,在通信过程中会存在一系列如可见性、原子性、顺序性等问题,而JMM就是围绕着多线程通信以及与其相关的一系列特性而建立的模型。JMM定义了一些语法集,这些语法集映射到Java语言中就是volatile、synchronized等关键字。

在JMM中,我们把多个线程间通信的共享内存称之为主内存,而在并发编程中多个线程都维护了一个自己的本地内存(这是个抽象概念),其中保存的数据是主内存中的数据拷贝。而JMM主要是控制本地内存和主内存之间的数据交互的。
在这里插入图片描述

总结

多读书,多思考,多总结!

发布了63 篇原创文章 · 获赞 29 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/Hpsyche/article/details/102511868