本文简单介绍一下Java内存模型
一、主内存与工作内存
二、内存间的交互操作
一、主内存与工作内存
1、Java的内存模型(Java Memory Model,JMM)
java虚拟机规范中尝试用一种Java内存模型来屏蔽掉各种硬件与操作系统的内存访问差异,以实现java程序在各种平台上都能达到一致的并发效果。
2、主内存与工作内存
1>Java内存模型主要目的
定义程序中各个变量的访问规则,即虚拟机中将变量存储到内存和从内存中取出的底层细节。
上述变量与Java程序中的变量略有区别:该变量包括实例字段,静态字段和构成数组对象的元素,不包括局部变量和方法参数,因为后者为线程私有,不会存在共享。
2>主内存与工作内存
①主内存(Main memory):
java内存模型规定:所有的变量都存储在主内存中,此处主内存可与硬件主内存类比,但此处的主内存为jvm的一部分。
②工作内存(Working memory):
《1》可与处理器的高速缓存类比,线程的工作内存保存了该线程使用到的变量在主内存中的副本拷贝,线程对变量的所有读写操作必须在工作内存进行,不能在主内存进行;
《2》不同线程之间无法访问对方的工作内存中的变量;
《3》线程间变量值的传递都是通过主内存来完成的;
3>不同角度理解主内存与工作内存
(1) 主内存与工作内存与java内存区域中的java堆、栈、方法区并不是同一个层次的内存划分;
(2)如果两种划分方式对应:主内存对应堆中的实例部分,而工作内存对应虚拟机栈的部分区域;
(3)低层次而言:主内存就是硬件内存,获取更快的运算速度,虚拟机的硬件系统可能会让工作内存优先于寄存器与高速缓存。
二、内存间交互操作
主内存与工作内存的交互协议,即一个变量如何从做内存拷贝到工作内存,以及工作内存中的变量如何同步回主内存的实现细节。
java内存模型定义8中操作完成:
(1)lock(锁定):作用于主内存的变量,把一个标量表示为线程独占状态;
(2)unlock(解锁):作用于主内存的变量,把一个锁定的变量解锁,解锁的变量可以被其他线程锁定;
(3)read(读取):作用于主内存的变量,将一个变量的值从主内存传输到线程的工作内存,以便随后的load操作;
(4)load(载入):作用于工作内存,将read操作从主内存读到的变量值放入到工作内存的变量副本中;
(5)use(使用):作用于工作内存中,将工作内存中的一个变量值传递给执行引擎,每当虚拟机需要一个使用变量值的字节码指令时将会执行该操作;
(6)assign(赋值):作用于工作内存,将一个从执行引擎收到的值赋值给工作内存变量;
(7)store(存储):作用于工作内存的变量,将工作内存中的一个值传递到主内存,以便随后的write操作使用;
(8)write(写入):作用于主内存,将store操作的工作内存的得到的变量的值放入主内存的变量中
相关推荐
Java内存模型(JMM,Java Memory Model)是Java平台中用于描述如何在多线程环境中管理内存的一套规范。它确保了并发编程时不同线程之间的数据一致性、可见性和原子性,以避免出现数据竞争和其他并发问题。以下是JMM...
Java内存模型详解JMM Java内存模型(Java Memory Model,JMM)是Java虚拟机(JVM)中的一种内存模型,它描述了程序中各个变量之间的关系,以及在实际计算机系统中将变量存储到内存和从内存中取出变量这样的底层细节...
Java内存模型JMM心得 Java内存模型(JMM)是Java虚拟机规范中的一部分,对Java编程语言的内存模型进行了抽象,解决了编译器和处理器的优化对多线程程序的影响。JMM的主要目标是提供一个在多线程环境下正确的内存...
主要介绍了Java内存模型JMM详解,涉及volatile和监视器锁,final字段,内存屏障等相关内容,具有一定参考价值,需要的朋友可以了解下。
Java内存模型,简称JMM(Java Memory Model),是Java虚拟机规范中定义的一个抽象概念,它描述了在多线程环境下,如何保证各个线程对共享数据的一致性视图。JMM的主要目标是定义程序中各个变量的访问规则,以及在...
Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了程序中各个线程如何访问和修改共享变量,以及如何确保数据的一致性。深入理解Java内存模型对于编写高效的并发程序至关重要。本文...
Java内存模型是并发编程中一个至关重要的概念,它定义了共享变量的访问规则,以及这些变量如何在多线程环境下进行读写操作。在深入理解Java内存模型之前,我们需要先了解并发编程模型的分类,然后掌握Java内存模型的...
并发编程有多种风格,除了CSP(通信顺序进程)、Actor等模型外,大家熟悉的应该是基于线程和锁的共享内存模型了。在多线程编程中,需要注意三类并发问题: 1、原子性 2、可见性 3、重排序 原子性涉及到...
Java内存模型(Java Memory Model,简称JMM)是Java并发编程中的核心概念,它定义了Java程序中多线程间共享变量的访问规则。理解JMM对于编写正确、高效的并发程序至关重要。本文将深入探讨JMM的原理、特性以及如何在...
Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了线程如何共享和访问内存,以及在多线程环境中如何保证数据一致性。理解JMM对于编写高效、正确且线程安全的Java代码至关重要。 ...
Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了线程如何共享和访问内存,以及在并发编程中如何处理数据一致性的问题。理解JMM对于编写高效、线程安全的Java代码至关重要。 1. ...
Java内存模型(Java Memory Model,简称JMM)作为Java并发机制的核心,其设计理念直接影响到程序的性能与可靠性。本文将探讨Java内存模型从早期版本到JDK 5的重大变革,并重点介绍这一变迁背后的动机及其对Java开发...
Java 内存模型(Java Memory Model,简称 JMM)是 Java 平台中关于线程如何访问共享变量的一套规则,它定义了线程之间的内存可见性、数据一致性以及指令重排序等关键概念,对于多线程编程和并发性能优化至关重要。...
Java内存模型(Java Memory Model,JMM)是Java平台中非常关键的概念,它定义了线程如何共享和访问内存中的数据,以及在多线程环境下如何保证数据的一致性。这本书"深入理解Java内存模型"显然是为了帮助读者深入探讨...
Java线程之间的通信由Java内存模型(本文简称为JMM)控制,JMM决定一个线程对共享变量的写入何时对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main ...
Java内存模型(Java Memory Model,简称JMM)是Java虚拟机(JVM)规范中定义的一种内存模型,它涉及了线程之间共享变量的可见性问题。在并发编程中,理解Java内存模型对于编写正确的多线程程序至关重要。 首先,...
标题和描述中提及的知识点主要围绕Java内存模型(JMM),JVM内存结构,包括堆栈讲解,以及本机内存管理等内容。以下是对这些知识点的详细阐述: ### Java内存模型(JMM) #### JMM简介 Java内存模型(JMM)是Java虚拟机...