数据的存储:内存和寄存器

在计算机中,数据在哪里存放着呢?只在内存吗?

答:不是的。最初数据先在内存中存放,但是当用的时候会加载到CPU的寄存器里面。

内存和寄存器是两个地方,从而出现了新的名词:内存可见性和寄存器可见性。

为什么叫内存可见性呢?感觉这是一个很奇怪的名字。其实,明白以下道理就不奇怪了:

数据的流动过程是:内存->寄存器->运算器

很多时候,数据从内存地址读取到寄存器里面,在随后的计算过程中CPU就一直使用寄存器里面的值,即便内存里面的值发生变化,CPU也不知道,CPU此时就是井底之蛙,而变量此时可以称为:寄存器可见性。

但是当变量被volatile修饰之后,CPU就不敢再偷懒,只要用到数据,它都会越过寄存器,直接从内存中读取,然后再在运算器中计算,最后返回给内存,这个时候变量就不在寄存器里面停留,就当寄存器不存在一样,这就称为内存可见性。