Java-JMM

作者: 森屿暖茶 | 来源:发表于2021-02-01 14:51 被阅读0次

    JMM(JavaMemoryModel)

    Java内存模型,简称JMM,隶属于JVM。

    Jeff Dean在Google全体工程大会的报告 数据参考(从图中可以看出大多数时间花在了IO上真正运算并没有占用多少时间)

    现在的cpu都存在多级缓存(比如常见的3级缓存),多级缓存介于cpu和内存之间,多级缓存的技术使cpu能够更快读取缓存的数据进行运算。

    过程:将运算需要使用到的数据复制到缓存中,让运算能快速进行,当运算结束后再从缓存同步回内存之中,这样处理器就无须等待缓慢的内存读写了。(所以会导致在不加锁的情况下,某些复合操作再多线程情况下会冲突。)

    JMM定义了工作内存(线程)与主内存的抽象关系(不是真实存在的),线程之间的共享变量存储于主内存中,每个线程都拥有私有的本地变量。

    在执行程序时,为了提高性能,编译器和处理器常常会对指令做重排序。

    不可变(Immutable)的对象一定是线程安全的(如final关键字修饰的String、枚举类型)

    如果线程A与线程B之间要通信的话,必须要经历下面2个步骤:

    1)线程A把本地内存(工作内存)A中更新过的共享变量刷新到主内存中去。

    2)线程B到主内存中去读取线程A之前已更新过的共享变量。

    相关文章

      网友评论

          本文标题:Java-JMM

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