Java内存模型(JVM)和Java运行时数据区
内存模型就是对特定的内存或者高速缓存进行读写访问的过程抽象描述和约定,不同架构下的物理机或者操作系统拥有不一样的内存模型,而Java虚拟机是一个实现了跨平台的虚拟系统。【不同的硬件之间的内存模型有些许差异,Java内存模型屏蔽各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到⼀致的内存访问效果】
Java运行时数据区才是将内存分成某些具体的部分,以及各部分分别存放什么。
JVM大致可以概括为3个基本部分:
基本的模型
3个同步原语的内存模型
happens-before(JVM最核心的概念)
通信和同步
在并发编程中,线程间的通信有两种模型:共享内存和消息传递。
共享内存是指线程间共享,通过读写内存中的共功状态来实现隐式通信,消息传递线程间没有共享状态,线程间必须通过发送接受消息来进⾏显⽰通信。共享内存的同步是显⽰进⾏的,必须显⽰的指定某个⽅法或者某段代码在程序之间互斥执⾏,⽽消息传递的同步是隐式执⾏的,消息的发送⼀定在消息的接受之前嘛。
Java采⽤的是共享内存模型,隐式通信,显⽰同步
共享模型
简单来说就是一个主内存,每个线程有自己的工作内存。