美文网首页
2.Java内存模型

2.Java内存模型

作者: 陪伴你的大数据 | 来源:发表于2021-01-19 23:09 被阅读0次

1.java并发编程的线程间通信及线程间如何同步
线程间通信分为:共享内存,消息传递。
线程间同步:共享内存是代码指定的显示同步,消息传递是先发送后接收的隐式同步。
java采用共享内存,显示同步。

2.java内存模型抽象--JMM
线程A 线程A本地内存 (可以是缓冲区)
主内存(堆内存--实例对象、静态域、数组元素)
线程B 线程B本地内存 (可以是缓冲区)

本地内存是JMM抽象概念
不用线程的通信要通过线程刷新变量到主内存中,其他线程从主内存拉取实现线程间共享。
3.重排序
java代码-->1.编译器优化排序-->2.cpu指令级并行重排序-->3.内存系统重排序-->最终执行的指令

编译器会优化指令顺序,处理器会IPL指令级并行技术重排序,内存由于使用缓存及读/写缓冲区看起来重排指令。
解决办法:java编译器在生成指令时加入内存屏障,禁止某些指令重排序。

4.内存屏障分类
LoadLoad 示例:load1 ;LoadLoad;load2 。 load1加载先于load2及后边指令
StoreStore sotre1指令刷新到主内存,先于store2及后指令
LoadStore load1先于store2及后指令
StoreLoad store1刷新到内存,保证屏障前所有指令都完成后才执行屏障后指令。级别最高。消耗最大,需要将缓冲区中数据全部刷新到主内存中。

5.happens-before简介
一个操作需要对另一个操作可见,即是happens-before关系。

相关文章

  • JVM系列(3) JMM & volatile, synchro

    1.高速缓存, 主内存, 工作内存 2.Java内存模型 2.1 Java内存模型是围绕着并发编程中原子性、可见性...

  • 2.深入volatile

    1.并发基础 2.java内存模型&jvm内存模型 上图可以清除看出,每个工作线程都有独立的内存空间 3.特性 可...

  • 2.Java内存模型

    1.java并发编程的线程间通信及线程间如何同步线程间通信分为:共享内存,消息传递。线程间同步:共享内存是代码指定...

  • 阿里p8知识之JMM线程内存模型

    1.常规cpu模型 增加了缓存的概念,就比如cpu的一级二级缓存等等(速度大于主内存) 2.Java线程内存模型 ...

  • Jvm

    1.java内存的堆和栈的问题2.java的内存模型---到底指的是什么--JMM它描述的java程序中各种变量(...

  • OPPO一面电话面试总结

    1.进程和线程的区别 2.java虚拟机内存结构 内存模型,Java虚拟机,程序计数器(和线程共生,记录执行位置)...

  • 2.java内存模型与线程

    一、vlatile关键字的理解 https://www.cnblogs.com/study-everyday/p/...

  • Java内存模型-Java内存模型的基础1

    章节目录 1.并发编程需要解决的问题-线程间通信&线程间同步 2.Java内存模型的抽象结构 3.从源代码到指令序...

  • Flink JobManager | TaskManager内存

    Flink内存模型分析 JobManager内存模型 TaskManager内存模型 内存模型分析 Flink使用...

  • 图解jvm--(四)内存模型

    内存模型 java 内存模型 很多人将【java 内存结构】与【java 内存模型】傻傻分不清,【java 内存模...

网友评论

      本文标题:2.Java内存模型

      本文链接:https://www.haomeiwen.com/subject/qbqhzktx.html