RAM、ROM、高速缓存(Cache)的联系和区别

RAM(Random Access Memory):

 随机存储器,俗称内存,我们常说的电脑内存8g,指的就是这个(也不完全正确)。RAM要求每时每刻都不断地供电,否则数据会丢失。它由半导体材料制作,是计算机的工作场所。

ROM(Read Only Memory):

  只读存储器,应用于硬盘存储。一般由磁性材料制作,用来存放暂时不用的信息,只有加载到内存(RAM)中才能被CPU处理。即CPU与硬盘不发生直接的数据交换。

Cache (高速缓冲存储器)

 Cache介于CPU与RAM之间,是一个读写速度比RAM更快的存储器。当CPU向RAM中写入或读出数据时会同步存储进Cache中,当CPU再次需要这些数据时,CPU就从Cache读取数据,而不是访问较慢的内存,如需要的数据在Cache中没有,CPU会再去读取Cache中的数据。

访问速度

Cache>>RAM>>ROM

知识关联(volatile)

 Java中的关键字volatile,在多线程中,具有可见性,但不具备原子性,就与Cache和RAM有关(其实共享变量都有关)。
 假如同时有两个线程对同一字段进行读写,有时候读的是Cache中的,有的时候读的是RAM中的,两者未能完全同步,如下面代码:
三个线程对同一字段执行增加操作,最后的值应该是3000。

public class ThreadTest implements Runnable {

    public static volatile int sum = 0;

    public static void main(String[] args) {

        for (int i = 0; i < 3; i++) {
            new Thread (new ThreadTest (),"线程:"+i).start ();
        }
    }

    @Override
    public void run() {
        for (int i = 0; i < 10000; i++) {
            sum++;
        }
        System.out.println (Thread.currentThread ().getName ()+":"+sum);
    }
}

执行结果:
在这里插入图片描述
 最后的结果小于30000,这就是因为三个线程在获取sum的值得时候,本应该去Cache中获取的,但是Cache非常小,马上就消失了,需要去RAM中获取,这时两者未能完成同步就造成了这种小于30000的情况。

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值