JVM----Java内存模型与线程

       我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子。

                                               

       中间的就是神奇的高速缓存,这样,就算你的CPU和内存之间的IO操作很慢,跟不上CPU的速度,我们的CPU也可以先读取高速缓存中的内容,等IO操作完毕后也不迟......

       基于高速缓存的策略确实很好的解决了处理器与内存速度之间的矛盾,但是随之而来的问题就是:缓存一致性。特别是在多处理系统中(现在的电脑基本都是多核处理器),每个处理器都有属于自己的高速缓存,而他们又是共享一个主内存(Main Memory),那么当多个处理器的运算任务都涉及到同一个主内存时,很大的可能性会导致各自的缓存数据不一致。

                                                 

主内存与工作内存

       针对此问题,我们的Java设计者也在Java语言上加了许许多多的概念模型-----Java内存模型,屏蔽了各种硬件和操作系统之间的内存访问差异。java内存模型主要是定义程序中各个变量的访问规则,就想上面我们所说的Main Memory,对应在java内存模型中就是主内存,而每个处理器的高速缓存,在Java内存模型里就是各个线程对应的工作内存

 

转载于:https://www.cnblogs.com/Booker808-java/p/9221289.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值