java并发(二)--.JMM内存模型对并发的保障

2023-11-05

2.JMM内存模型

1.计算机结构

QQ截图20220109114051

输入设备:就是我们的鼠标,键盘

存储器:对应的就是我们的内存,缓存

运算器和控制器共同组成了cpu

而输出设备就比如显示屏,打印机。

我们重点来聊一下缓存:

2.缓存

其实,当我们说计算机运行效率低下,速度慢,往往不是cpu的锅。而问题所在一般都是内存访问速度太慢。

CPU的运算速度和内存的访问速度相差比较大。这就导致CPU每次操作内存都要耗费很多等待时间。内存的读写速度成为了计算机运行的瓶颈。

于是就有了在CPU和主内存之间增加缓存的设计。最靠近CPU的缓存称为L1,然后依次是L2,L3和主内存。

CPU缓存模型如图下图所示。
QQ截图20220109114428

运行速度: L1cache >L2cache >L3cache >内存

所以,系统会先访问L1缓存>L2缓存>L3缓存>内存

具体的速度如下:
QQ截图20220109114528

3.java内存模型概念

Java内存模型,是Java虚拟机规范中所定义的一种内存模型,Java内存模型是标准化的,屏蔽掉了底层不同计算机的区别。

Java内存模型是一套规范,描述了Java程序中各种变量(线程共享变量)的访问规则,以及在JVM中将变量存储到内存和从内存中读取变量这样的底层细节。

具体如下:

QQ截图20220109114829

Java内存模型如上面所示:规定了工作内存和主内存的概念及其交互。

对共享数据的可见性、有序性、和原子性的规则和保障。

QQ截图20220109114927

工作内存和主内存可能在很多地方(cpu寄存器 缓存 或者主内存)

4.主内存和工作内存的交互

Java内存模型中定义了以下8种操作来完成,主内存与工作内存之间具体的交互协议,即一个变量如何从主内存拷贝到工作内存、如何从工作内存同步回主内存之类的实现细节,虚拟机实现时必须保证下面提及的每一种操作都是原子的、不可再分的。

具体操作如下图:

QQ截图20220109115543

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java并发(二)--.JMM内存模型对并发的保障 的相关文章

  • Keytool 应用程序在哪里?

    我需要在android中使用mapview控件 但我似乎不明白如何运行keytool 是用eclipse安装的吗 我好像找不到下载链接 Thanks keytool http docs oracle com javase 7 docs te
  • HashMap不写入数据库

    我尝试在我的数据库中写入 但只写入发件人和消息 我不明白为什么会发生这种情况 我认为问题出在我使用 sendMessage 的地方 我认为问题是我没有什么可以做的读 写其他用户的主键 我在数据库中写入消息的活动 public class M
  • Android 2.2 SDK - Droid X 相机活动无法正常完成

    我注意到我在 Droid X 上调用的默认相机活动与我的 Droid 和 Nexus One 上的默认相机活动看起来不同 在 Droid 和 Nexus One 上选择 确定 后 活动将完成 Droid X 有一个 完成 按钮 它将带您返回
  • 如何从秘密字符串中制作 HMAC_SHA256 密钥以在 jose4j 中与 JWT 一起使用?

    我想生成 JWT 并使用 HMAC SHA256 对其进行签名 对于该任务我必须使用jose4j https bitbucket org b c jose4j wiki Home 我尝试根据秘密生成密钥 SecretKeySpec key
  • Spring安全“记住我”cookie在第一个请求中不可用

    我无法在登录请求后检索 Spring 记住我 cookie 但它在对受保护页面的下一个请求中工作正常 谁能告诉我怎样才能立即得到它 我在登录请求中设置了记住我的 cookie 但在 Spring 重定向回原始 受保护的 url 后无法检索它
  • 来自数据库的 jfreechart 散点图

    如何使用java中的jfreechart绘制mysql数据库表中数据的散点图 我使用过 Swing 库 任何链接都会有帮助 我搜索了谷歌但找不到理解的解决方案 如果您有代码 请提供给我 实际上我确实做了条形图并使用 jfreechart 绘
  • 如何在android中设置多个闹钟,在这种情况下最后一个闹钟会覆盖以前的闹钟

    我正在开发一个Android应用程序 用户可以在其中设置提醒时间 但我在以下代码中遇到一个问题 即最后一个警报会覆盖之前的所有警报 MainActivity java public void setreminders DatabaseHan
  • Java:正则表达式排除空值

    在问题中here https stackoverflow com questions 51359056 java regexp for a separated group of digits 我得到了正则表达式来匹配 1 到 99 之间的一
  • Java 8 中函数式接口的使用

    这是来自的后续问题Java 8 中的 双冒号 运算符 https stackoverflow com questions 20001427 double colon operator in java 8其中 Java 允许您使用以下方式引用
  • 计算日期之间的天数差异

    在我的代码中 日期之间的差异是错误的 因为它应该是 38 天而不是 8 天 我该如何修复 package random04diferencadata import java text ParseException import java t
  • Java - 返回值是否会中断循环?

    我正在编写一些基本上遵循以下格式的代码 public static boolean isIncluded E element Node
  • Dispatcher-servlet 无法映射到 websocket 请求

    我正在开发一个以Spring为主要框架的Java web应用程序 特别使用Spring core Spring mvc Spring security Spring data Spring websocket 像这样在 Spring 上下文
  • 如何在 Eclipse Java 动态 Web 项目中使用 .properties 文件?

    我正在 Eclipse 中开发动态 Web 项目 我创建了一个 properties 文件来存储数据库详细信息 用户名 密码等 我通过右键单击项目和 New gt File 添加它 我使用了Java util包Properties类 但它不
  • 尝试使用等于“是”或“否”的字符串变量重新启动 do-while 循环

    计算行程距离的非常简单的程序 一周前刚刚开始 我有这个循环用于解决真或假问题 但我希望它适用于简单的 是 或 否 我为此分配的字符串是答案 public class Main public static void main String a
  • 解析输入,除了 System.in.read() 之外不使用任何东西

    我很难找到具体的细节System in read 有效 也许有人可以帮助我 似乎扫描仪会更好 但我不允许使用它 我被分配了一个任务 我应该以 Boolean Operator Boolean 的形式读取控制台用户输入 例如T F 或 T T
  • Linux 上有关 getBounds() 和 setBounds() 的 bug_id=4806603 的解决方法?

    在 Linux 平台上 Frame getBounds 和 Frame setBounds 的工作方式不一致 这在 2003 年就已经有报道了 请参见此处 http bugs java com bugdatabase view bug do
  • 如何在Java中正确删除数组[重复]

    这个问题在这里已经有答案了 我刚接触 Java 4 天 从我搜索过的教程来看 讲师们花费了大量精力来解释如何分配二维数组 例如 如下所示 Foo fooArray new Foo 2 3 但我还没有找到任何解释如何删除它们的信息 从内存的情
  • JSON 到 hashmap (杰克逊)

    我想将 JSON 转换为 HashMapJackson http jackson codehaus org 这是我的 JSON String json Opleidingen name Bijz trajecten zorg en welz
  • Java的-XX:+UseMembar参数是什么

    我在各种地方 论坛等 看到这个参数 并且常见的答案是它有助于高并发服务器 尽管如此 我还是找不到 sun 的官方文档来解释它的作用 另外 它是Java 6中添加的还是Java 5中存在的 顺便说一句 许多热点虚拟机参数的好地方是这一页 ht
  • Hibernate 和可序列化实体

    有谁知道是否有一个框架能够从实体类中剥离 Hibernate 集合以使它们可序列化 我查看了 BeanLib 但它似乎只进行实体的深层复制 而不允许我为实体类中的集合类型指定实现映射 BeanLib 目前不适用于 Hibernate 3 5

随机推荐

  • IntelliJ IDEA 好用的插件

    IntelliJ IDEA 好用的插件 1 Maven Helper Maven Helper插件可以方便显示maven的依赖树和方便解决依赖冲突问题 2 Alibaba Java Coding Guidelines Alibaba Jav
  • @FeignClient Get请求、实体参数,自动转POST请求问题

    问题 报错提示不支持POST请求 解决 使用SpringCloud2 1以上版本提供的 SpringQueryMap注解标注在实体对象参数后解决 导入注解包路径 import org springframework cloud openfe
  • lapack安装 matlab,调用 LAPACK 和 BLAS 函数

    将参数从 Fortran 程序传递给 Fortran 函数 您可以从 Fortran MEX 文件中调用 LAPACK 和 BLAS 函数 以下示例使用两个矩阵 并通过调用 BLAS 例程 dgemm 将这两个矩阵相乘 要运行该示例 请将代
  • java生成excel文件并写入数据(附csv)

    写一个超级简单粗暴的小代码了 直接看吧 public static void createxlsFile String filePath String fileName String suffix Map
  • 析构函数详解

    析构函数详解 析构函数的概念 前面通过构造函数的学习 我们知道一个对象是怎么来的 那一个对象又是怎么没呢的 析构函数 与构造函数功能相反 析构函数是完成对象的销毁 局部对象销毁工作是由编译器完成的 而对象在销毁时会自动调用析构函数 完成类的
  • 打砖块游戏实验报告Android,增强学习系列之(三):实现一个打砖块的游戏

    1 Acknowledgement 本篇文章中神经网络的结构主要来自于DeepMind的这篇论文 https www cs toronto edu vmnih docs dqn pdf 2 实现效果 我们要实现的这个游戏 在openai的g
  • 服务器虚拟环境的搭建

    pip 清华镜像 pip install tensorflow i https pypi tuna tsinghua edu cn simple cuda 查看cuda 版本 cat usr local cuda version txt c
  • 常用采样方法

    常用采样方法 最近在学习 MCMC 一种特殊的采样方法 顺便把其他常用的方法了解了一下 为什么要采样 很多问题 我们只需要使用数学解析的方法即可解决 例如对 f x 做积分 如果 f x x 2 那么直接积分就行 很简单 若f x 是标准正
  • 系列:6、Kubernetes 的升级与部署策略

    Kubernetes 的升级与部署策略 以下将一起介绍Kubernetes的升级与部署策略 1 节点升级和驱逐 Node Upgrade and Eviction 您将如何升级节点通常取决于您如何设置集群 如果使用 kubeadm 工具设置
  • 理解数据库范式

    数据库范式是数据库 设计 中必不可少的知识 没有对范式的理解 就无法设计出高效率 优雅的数据库 甚至设计出错误的数据库 而想要理解并掌握范式却并不是那 么容易 教科书中一般以关系代数的方法来解释数据库范式 这样做虽然能够十分准确的表达数据库
  • 0成本搭建自己的云数据库

    第一步 租免费的云服务器 www aliyun com 阿里云的 可以免费租三个月 进入主页后选择云服务器ESC 选择这款 点击试用就行 第二步 配置服务器 在配置服务器系统的时候选择centos 省事 别选ubuntu 很麻烦的 然后就是
  • python selenium控制浏览器打开网页 模拟鼠标动作

    selenium 是一个浏览器控制的库 需要下载安装 谷歌浏览器的驱动 chromedriver https sites google com chromium org driver downloads 在这里选择跟自己谷歌浏览器版本号一致
  • 孟言与郭安定畅谈office开发

    孟言与郭安定畅谈office开发 孟言 CSDN的观众朋友大家下午好 今天我特别高兴的邀请到我们飞升两岸的office开发专 家郭安定 老师来到我们演播室 郭 老师你好 郭安定 恩 孟言你好 CSDN观众朋友好 真的是在百忙之中 我们平常的
  • v-for动态图片列表展示以及动态给div添加背景图片

    v for动态图片列表以及动态给div添加背景图片方法 效果如下图所示 HTML div class branchWorkshop ul li div class workshopImg div span span li ul div
  • 内网渗透-代理篇(reGeorg+Proxifier代理工具)

    声明 贝塔安全实验室公众号大部分文章来自团队核心成员和知识星球成员 少部分文章经过原作者授权和其它公众号白名单转载 未经授权 严禁转载 如需转载 请联系开白 请勿利用文章内的相关技术从事非法测试 如因此产生的一切不良后果与文章作者及本公众号
  • 无线加密技术

    无线加密技术概述 随着信息技术的不断发展 人们对通信的要求也在不断提升 近年来 由于无线局域网 Wireless LAN 可以提供灵活方便的网络接入而倍受各厂商和众多消费者的青睐 越来越多的机场 餐厅 酒吧都可提供无线接入互联网的服务 使用
  • BAPI_OUTB_DELIVERY_CHANGE - 删除整个交货单和行项目

    转载自 https archive sap com discussions thread 864267 IF delivery item IS NOT INITIAL Delete particular Delivery item SELE
  • 宽带上网知识(如何进行上网流程配置,路由器上网配置)

    中国大陆现在提供上网宽带服务的公司有 网通 铁通 电信 专业点叫 ISP 因特网服务提供商 铁通业务归属于中国移动 网通业务归属于中国联通 无论哪一家 对用户提供的都是大致一样的上网服务 即宽带业务 宽带业务是通信公司为用户提供的高速访问互
  • RuntimeWarning: divide by zero encountered in log错误解决

    问题描述 最近在学习 机器学习实战 这本书时 朴素贝叶斯那里遇到了这样的问题 def train native bayes train matrix train category num train docs len train matri
  • java并发(二)--.JMM内存模型对并发的保障

    2 JMM内存模型 1 计算机结构 输入设备 就是我们的鼠标 键盘 存储器 对应的就是我们的内存 缓存 运算器和控制器共同组成了cpu 而输出设备就比如显示屏 打印机 我们重点来聊一下缓存 2 缓存 其实 当我们说计算机运行效率低下 速度慢