首页 > 编程语言 > 详细

java内存模型(待完善)

时间:2015-06-29 06:17:07      阅读:177      评论:0      收藏:0      [点我收藏+]

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 域

 

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

java内存模型(待完善)

原文:http://www.cnblogs.com/outpointexception/p/4606433.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!