前言

很多人都以为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主要是控制本地内存和主内存之间的数据交互的。

总结

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

JVM内存模型和JAVA内存模型的区别相关推荐

  1. jvm内存模型和java内存模型_JVM运行时内存模型综述

    JVM内存模型 JVM分为五个区域:虚拟机栈.本地方法栈.方法区.堆.程序计数器. JVM不同区域的占用内存大小不同,一般情况下堆最大,程序计数器较小. JVM五个区中虚拟机栈.本地方法栈.程序计数器 ...

  2. Java内存模型和Java内存结构精读

    以前看过很多遍JVM相关知识的文章,无非都是直接来张图片开搞,一来就甩张图片上来,这是方法区,这是堆,这是线程独享的一堆堆的概念,看得真的是头大,死记硬背也记不下来,更别说理解了. 最近一段时间在看j ...

  3. java 堆内存结构_JVM内存结构、Java内存模型和Java对象模型

    JVM内存结构 我们都知道,Java代码是要运行在虚拟机上的,而虚拟机在执行Java程序的过程中会把所管理的内存划分为若干个不同的数据区域,这些区域都有各自的用途.其中有些区域随着虚拟机进程的启动而存 ...

  4. 前端面试题 | 标准盒模型和IE盒模型的区别?

    两者的区别在于content的不同,IE盒模型的content包含border,padding W3C盒子模型(又称之为标准盒模型)的范围包括margin.border.padding.content ...

  5. utxo模型_UTXO模型和Account账户模型的区别和对比

    最近一直看NX-MAX共识协议,以前没有看过NC共识,很多基本的概念不是很了解,边看边做了些笔记,和大家分享: Account模型 首先我们来看看Account模型是怎样的,举个例子A的银行账户里面有 ...

  6. 基于JVM原理、JMM模型和CPU缓存模型深入理解Java并发编程

    许多以Java多线程开发为主题的技术书籍,都会把对Java虚拟机和Java内存模型的讲解,作为讲授Java并发编程开发的主要内容,有的还深入到计算机系统的内存.CPU.缓存等予以说明.实际上,在实际的 ...

  7. 区分 JVM 内存结构、 Java 内存模型 以及 Java 对象模型 三个概念

    本文由 简悦 SimpRead 转码, 原文地址 https://www.toutiao.com/i6732361325244056072/ 作者:Hollis 来源:公众号Hollis Java 作 ...

  8. JVM内存结构 VS Java内存模型 VS Java对象模型

    Java作为一种面向对象的,跨平台语言,其对象.内存等一直是比较难的知识点.而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚.比如本文我们要讨论的JVM内存结构.Java内存模型和Java对象 ...

  9. 标准事件模型和IE事件模型

    前言:在上一篇博客中总结了0级DOM事件模型和2级DOM事件模型,打铁趁热就在谈谈标准事件模型和IE事件模型的区别吧. 一. 标准事件模型 在JavaScript中把标准事件模型的执行分为三个阶段,即 ...

  10. 快速带你分清java内存结构,java内存模型,java对象模型和jvm内存结构!

    现如今你是否有这样的感觉,无论生活还是学习,节奏都是非常的快,每天面对海量的知识信息,自己感觉都要hold不住了,每天打开微信公众号,是不是发现有几十条未读,无论是技术文章还是其他类型的文章,我们大多 ...

最新文章

  1. 【C语言入门教程】2.7 表达式
  2. rtmp 封包及消息
  3. python基础知识面试题-python基础知识的重点面试题
  4. Hibernate映射配置方法
  5. FactoryBean的使用--转
  6. 物料信息记录中几个常见的数据表
  7. ORA-08176 错误的一个案例
  8. Spring Mvc 入门Demo
  9. 【Docker】elasticsearch 监控工具 elasticsearch-HQ
  10. java 克隆一个对象_Java对象克隆
  11. RSA 2019安全大会:企业资产管理成行业新风向标,云上安全占绝对优势...
  12. C语言之fwrite()与fprintf()区别(十一)
  13. QT编译项目错误:转换到coff期间失败文件无效或损坏
  14. 网页制作 网页下拉菜单HTML+CSS制作
  15. win10中jdk安装详细安装过程
  16. 联想服务器重装系统按什么键,联想重装系统按哪个键
  17. 媒体-PR-微商-地摊儿…… 媒体人的转型你到了哪一步?
  18. 解析android系统下Dex2oat的实现
  19. 达梦8 DCA认证笔记
  20. (图文)自己组建自己迷你linux系统

热门文章

  1. system占用cpu过高
  2. w10系统打印服务器怎样出来,win10怎么打开关闭打印机服务教程步骤
  3. 《数字图像处理 第三版》(冈萨雷斯)——第七章 小波和多分辨率处理
  4. [lammps教程]OVITO绘制原子应力云图
  5. NoSuchMethodError: No virtual method centerCrop()/glide
  6. 语音压缩编解码器:lyra
  7. 基于Pytorch版yolov5的滑块验证码破解思路
  8. Android智能硬件开发心得总结(一)
  9. 怎么查看Java的源代码
  10. wangEditor富文本编辑器的简单使用