博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java内存模型(待完善)
阅读量:5021 次
发布时间:2019-06-12

本文共 675 字,大约阅读时间需要 2 分钟。

JMM

   1、内存模型的抽象。

本地内存是JMM的一个抽象概念,并不是真实存在,它涵盖了缓存,写缓冲区,寄存器以及其他的硬件和编译器优化。

 

   2、内存可见性问题?

      ?

   3、重排序

 编译器优化重排序       编译器再不改变单线程程序语义的前提下,可重新安排语句执行顺序。
指令级并行重排序       现代处理器采用了指令并行技术,来将多条指令重叠执行,如果不存在数据依赖性,处理器可以改变语句对应机器指令的执行顺序。
 内存系统重排序       由于处理器使用缓存和读/写缓冲区,这使得加载和存储操作看上去可能是乱序执行。

 

   4、内存屏障指令。

   5、happens-before

   6、顺序一致性

   7、volatile 变量

       volatile 变量

    • 可见性:对于volatile变量的读,总是能看到(任意线程)对这个volatile变量最后的写入。
    • 原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这样的复合操作不具有原子性。

       volatile的读-写内存语义

    • 当写一个volatile变量时,JMM会把该线程对应的本地内存中的共享变量值刷新到主内存。
    • 当读一个volatile变量时,JMM会把该线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量。

   8、锁(LOCK)

  • 锁释放与volatile写有相同的内存语义。
  • 锁获取与volatile读有相同的内存语义。

   9、final 域

 

还在学习中,还望各位多多指点指点。

转载于:https://www.cnblogs.com/outpointexception/p/4606433.html

你可能感兴趣的文章
如何配置MySQL
查看>>
C++反汇编学习笔记(三)
查看>>
使用CSS让多出来的字变为省略号
查看>>
JVM安全退出(如何优雅的关闭java服务)
查看>>
day4 class work answer
查看>>
tensorflow-TFRecord报错ValueError: Protocol message Feature has no "feature" field.
查看>>
Android为TV端助力 双缓存机制
查看>>
C#简单接口和继承示例详解——快速入门
查看>>
mvc
查看>>
反作弊基本概念与机器学习的应用(1)
查看>>
【bzoj 3631】[JLOI2014]松鼠的新家(树链剖分)
查看>>
mplayer 使用手册(中文)
查看>>
编写可维护的JavaScript-第7章-事件处理
查看>>
运维效率之数据迁移自动化
查看>>
UITableView
查看>>
Python-模块:OS,目录及文件的简单操作
查看>>
一篇关于web.xml配置的详细说明
查看>>
sysbench
查看>>
如何让商品标题类文本根据内容长度垂直居中
查看>>
二分法模板
查看>>