理解JVM 的内存模型之前,有必要理解一些硬件的内存架构,因为JVM的内存模型也是为了解决系统和硬件间内存交互的问题,才构建的一种虚拟的内存模型,这样就可以通过JVM来屏蔽硬件和系统的差异,达到统一的内存交互方式(
如volatile,就可以达到volatile变量到主内存的更新,但是正在的硬件的内存架构,是通过缓存一致性的协议,将CPU缓存区向主内存的更新不同的,这个是根据协议的不同,更新的时间点也不一样),这也是JVM存在的价值之一,
硬件的内存架构图如下:(http://tutorials.jenkov.com/java-concurrency/java-memory-model.html)
每个CPU都包含CPU 内存和一组CPU寄存器,寄存器本身又很强的存取能力,用来帮助CPU的计算
CPU是很昂贵的系统资源,速度很快,但是很小,只能容纳很小数据,更多的数据都存放在主内存中,大部分时间需要CPU和主内存进行交互,如数据读取,存储运算结果等,期间的I/O操作很难消除(没有办法仅靠寄存器来完成),因此现代的计算机会引入一种读写速度尽量接近处理器运算速度的高速缓存,作为主内存与CPU之间的缓冲:将运算结果放入缓存中,可以尽量的快速运行,当运算结束后,从缓存同步到内存中,
3者之间的顺序时这样的,当CPU读取数据时,
CPU读到主内存的数据,会将数据读到高速缓存区和寄存器中,当CPU需要把数据写到主内存时,会先将此CPU下的高速缓存的和寄存器数据先flush,然后再在某个点上回写到主内存中
这个时候又会出现一个新的问题,缓存一致性,每个CPU都有自己的高速缓存,他们又共享一个主内存,当不同的CPU运算完之后,要回写到主内存时,以谁的为准,这个时候强大的协议就要现身了:缓存一致性协议,这个协议可以告诉CPU,要回写到主内存的点,到底时什么,类似协议的花有:MSI,MESI,MOSI等等
自此硬件层面的内存架构就到这里了!!
- 大小: 10.8 KB
- 大小: 10.8 KB
分享到:
相关推荐
根据提供的文件信息,本文将详细解析Solaris Spark内存模型的核心概念与原理,涵盖硬件内存模型与软件内存模型的关键知识点。 ### Solaris Spark 内存模型概述 #### 1. 引言 在共享内存的多处理器系统中,内存...
CPU内部的一组寄存器组成了硬件内存模型的基石,而缓存和总线等部件确保了多核处理器之间的数据一致性。 理解Java内存模型对于编写多线程程序具有重要意义,因为这关系到内存可见性问题。如果程序员不理解线程间...
此外,随着现代处理器架构的不断发展,对内存模型的理解也可以帮助程序员更好地利用硬件的能力,比如理解缓存一致性协议、存储屏障指令等硬件特性是如何与Java内存模型相互影响的。 随着Java版本的演进,内存模型也...
Java程序员了解CPU以及相关的内存模型,对于深入理解Java内存模型以及并发编程至关重要。CPU作为计算机硬件的核心,其架构和工作原理影响着软件的性能和执行效率。尤其在Java这种多线程、高并发的编程语言中,对CPU...
8. **Java内存模型与硬件内存模型的关系** JMM抽象了硬件的内存模型,提供了更高级别的抽象,使得编程者无需关心底层细节,但JMM的实现依赖于具体的硬件平台和操作系统。 9. **并发编程的挑战与解决方案** 面对...
### Java内存模型的介绍和说明 #### JMM 简介 Java Memory Model(JMM),即Java内存模型,是Java虚拟机规范中定义的一套规定,用于描述Java程序中的各种变量(包括实例字段、静态字段和数组元素)的访问规则,...
9. **Java内存模型与硬件内存模型的关系** JMM是基于现代计算机内存模型设计的,它考虑了缓存、多核处理器等因素,为程序员提供了更高层次的抽象,简化了多线程编程的复杂性。 10. **Java内存模型的应用实践** - ...
Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了线程如何共享和访问内存,以及在并发编程中如何处理数据一致性的问题。理解JMM对于编写高效、线程安全的Java代码至关重要。 1. ...
### Java内存模型详解 #### 1. JMM简介 ##### i. 内存模型概述 Java内存模型(Java Memory Model, JMM)是Java虚拟机(JVM)的一部分,用于规定程序中的各种变量(包括实例字段、静态字段和数组元素等)在多个...
Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了线程如何共享和访问内存,以及在多线程环境中如何保证数据一致性。理解JMM对于编写高效、正确且线程安全的Java代码至关重要。 ...
Java内存模型(JMM)是Java虚拟机(JVM)的一部分,它定义了程序中不同变量如何交互,特别是在多线程环境下。JMM确保了在各种硬件和操作系统平台上,Java程序的行为具有一致性和可预测性。Java内存模型的主要目标是...
局部变量(Local variables),方法定义参数(java语言规范称之为formal method parameters)和异常处理器参数(exception handler parameters)不会在线程之间共享,它们不会有内存可见性问题,也不受内存模型的...
Java 内存模型(Java Memory Model,简称 JMM)是 Java 平台中关于线程如何访问共享变量的一套规则,它定义了线程之间的内存可见性、数据一致性以及指令重排序等关键概念,对于多线程编程和并发性能优化至关重要。...
Java内存模型(Java Memory Model,JMM)是Java虚拟机(JVM)规范中的一个重要组成部分,它定义了程序中各个变量(包括实例域、静态域和数组...同时,了解操作系统、硬件架构对内存模型的影响,也有助于优化程序性能。
Java内存模型,简称JMM(Java Memory Model),是Java虚拟机规范中定义的一个抽象概念,它描述了在多线程环境下,如何保证各个线程对共享数据的一致性视图。JMM的主要目标是定义程序中各个变量的访问规则,以及在...