内存模型

virgosnail virgosnail     2023-01-08     217

关键词:

1. 硬件的效率与一致性

  我们通过让计算机并发执行多个运算任务来充分利用计算机处理器的资源。但是运算任务除了计算之外还要进行IO的内存交互。由于计算机的存储设备与运算速度有几个数量级的差距,所以计算机系统都加入一层读写速度可能接近处理器运算速度的高速缓存

1.1 高速缓存

  缓存一致性问题

  在多处理器系统中,每个处理器都有自己的高速缓存,他们又共享同一主内存。当多个处理器涉及同一块主内存,可能导致各自缓存的数据不一致。

  解决方案:

  各个处理器访问缓存时遵循一些协议,读写数据时根据协议进行操作。比如:MSI,MESI,MOSI等。

  内存模型:在特定的操作协议下,对特定的内存或高速缓存进行读写访问的过程抽象。

  技术分享图片

1.2 乱序执行

  为了充分利用处理器性能,除了高速缓存之外,处理器还可能对输入的代码进行乱序执行优化。

  乱序执行:处理器在计算之后对乱序执行的结果重组,保证结果与顺序执行的结果一致,但不保证各个语句的执行顺序与代码顺序一致。

  Java的即时编译器也有类似的指令重排序优化。

2. Java内存模型

2.1 主内存和工作内存

  Java内存模型的目的:定义程序中各个变量的访问规则。即在虚拟机中将变量存储到内存和从内存中取出变量的底层细节。

  此处的变量包括实例字段,静态字段和构成数组对象的元素,但是不包括局部变量和方法参数,因为它们是线程私有,不存在竞争问题。

  Java内存模型规定所有的变量存储在主内存中。

  线程在工作内存中保存了使用到的主内存中变量的副本拷贝,线程对变量的操作必须在工作内存中进行,不能直接读写主内存中的变量。

jmm内存模型jvm内存模型

JMM内存模型  JMM即Java内存模型(JavaMemoryModel)。可以理解为它是一种抽象出来的硬件存储模型的规范。  根据JMM的设计,系统存在一个主内存(MainMemory),Java中所有变量都储存在主存中,对于所有线程都是共享的。每条线程都... 查看详情

并发艺术--java内存模型

前言  本章大致分为四部分。java内存模型的基础,介绍内存模型的相关基本概念;java内存模型中的顺序一致性,主要介绍重排序和顺序一致性;同步原语,涉及synchronized,volatile,final三个同步原语的内存含义及重排序等;jav... 查看详情

java内存模型

Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。如果你想设计表现良好的并发程序,理解Java内存... 查看详情

jvm基础--jvm内存模型

jvm基础–JVM内存模型文章目录jvm基础--JVM内存模型1.JVM内存模型1.JVM内存模型参考:深入理解JVM-JVM内存模型面试必问之JVM原理深入理解JVM-内存模型(jmm)和GC 查看详情

jvm基础--jvm内存模型

jvm基础–JVM内存模型文章目录jvm基础–JVM内存模型1.JVM内存模型1.JVM内存模型参考:深入理解JVM-JVM内存模型面试必问之JVM原理深入理解JVM-内存模型(jmm)和GC 查看详情

第三章java内存模型(上)

 本章大致分为4部分:Java内存模型的基础:主要介绍内存模型相关的基本概念Java内存模型中的顺序一致性:主要介绍重排序和顺序一致性内存模型同步原语:主要介绍3个同步原语(synchroized、volatile和final)的内存语义及重... 查看详情

java内存模型

Java内存模型Java虚拟机规范中试图定义一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的内存访问效果。Java内存模型的主要目标是定义程序中各个变量的访问规则,即... 查看详情

java内存模型

1.java内存模型是什么?java内存模型即JavaMemoryModel,简称JMM,其规范了Java虚拟机与计算机内存时如何协同工作的,规定了一个线程如何和何时看到其他线程修改过的值,以及在必须时,如何同步访问共享变量。    2... 查看详情

java内存模型

Java虚拟机规范试图定义一种Java内存模型来屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效果。在JDK1.5发布后,Java的内存模型已经成熟和完善起来了。1.主内存与工作内存:Java... 查看详情

深入java内存模型

在介绍Java内存模型之前,我们先来看一下到底什么是计算机内存模型,然后再来看Java内存模型在计算机内存模型的基础上都做了哪些事情。要说计算机的内存模型,就要说一段古老的历史,看一下为什么要有内... 查看详情

jvm内存模型

转自:http://gityuan.com/2016/01/09/java-memory/#section一、内存模型Java内存模型,往往是指Java程序在运行时内存的模型,而Java代码是运行在Java虚拟机之上的,由Java虚拟机通过解释执行(解释器)或编译执行(即时编译器)来完成,故Java内存... 查看详情

java内存模型(代码片段)

1、简介    Java内存模型规范了Java虚拟机与计算机内存是如何协同工作的。Java虚拟机是一个完整的计算机的一个模型,因此这个模型自然也包含一个内存模型——又称为Java内存模型。    如果你想设计表现良好的并发程... 查看详情

[转帖]jvm内存结构vsjava内存模型vsjava对象模型(代码片段)

JVM内存结构VSJava内存模型VSJava对象模型https://www.hollischuang.com/archives/2509 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如... 查看详情

java内存模型的历史变迁

本文通过介绍Java的新/旧内存模型,来展示Java技术的历史变迁。旧的Java内存模型Java使用的是共享内存的并发模型,在线程之间共享变量。Java语言定义了线程模型规范,通过内存模型控制线程与变量的交互,从而实现Java线程之... 查看详情

java内存模型(代码片段)

Java内存模型Java内存模型硬件内存模型多CUP缓存产生的同步问题CPU指令重排Java内存模型线程通信中可能存在的问题并发三要素可见性原子性有序性Java内存模型参考视频:https://www.bilibili.com/video/BV1F64y1B7sV参考博客:https://z... 查看详情

java内存模型(代码片段)

Java内存模型Java内存模型硬件内存模型多CUP缓存产生的同步问题CPU指令重排Java内存模型线程通信中可能存在的问题并发三要素可见性原子性有序性Java内存模型参考视频:https://www.bilibili.com/video/BV1F64y1B7sV参考博客:https://z... 查看详情

02java内存模型

java内存模型1、JVM内存区域方法区:类信息、常量、static、JIT(信息共享)java堆:实例对象GC(信息共享)OOMVMstack:JAVA方法在运行的内存模型(OOM)PC:java线程的私有数据,这个数据就是执行下一条指令的地址Nativemethodstack:月JVM的native... 查看详情

java内存模型

为何需要java内存模型(JavaMemoryModel,JMM):  用于屏蔽各种操作系统和硬件之间的内存访问差异,使得java能够在各种平台下能够达到一致的运行结果。java内存模型(虚拟机内存):  1、主内存:所有的变量都存储在主内存... 查看详情