Python 官方文档:入门教程 => 点击学习
目录1. JVM 运行时数据区2. JMM 内存模型硬件内存模型JMM3. 可见行与 volatile 关键字1. JVM 运行时数据区 JVM运行时数据区可以分为元空间,堆,虚拟机
JVM运行时数据区可以分为元空间,堆,虚拟机栈,本地方法栈,程序计数器五大块。
通常情况下,当CPU需要读取主存时,它会将主存的部分读到CPU缓存中或者内部寄存器中,然后在寄存器中执行操作。当CPU需要将结果写回到主存中去时,它会将内部寄存器的值刷新到缓存中,然后在某个时间点将值刷新回主存。
在多处理器系统中,每个处理器都有自己的高速缓存,而它们又共享同一主内存,因此就会存在缓存一致性问题。为了解决一致性的问题,需要各个处理器访问缓存时都遵循一些协议,在读写时要根据协议来进行操作,这类协议有MSI、MESI等。
JMM内存模型将内容分为了线程私有内存与主内存两部分,其与我们之前提到的硬件内存模型的对应关系如下所示:
私有内存与主内存的交互由如下八种操作控制:
一言以蔽之,volatile 关键字通过内存屏障的形式来阻止指令重排,以维护变量的有序性与可见行。
一行代码到执行的过程中要经历以下的阶段:
volatile 关键字有如下两个作用:
JVM中提供了四类内存屏障指令:
到此这篇关于JVM 运行时数据区与JMM 内存模型的文章就介绍到这了,更多相关JMM 内存模型内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!
--结束END--
本文标题: JVM 运行时数据区与JMM 内存模型
本文链接: https://lsjlt.com/news/171262.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-03-01
2024-03-01
2024-03-01
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
2024-02-29
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0