RAM内存,ROM,CACHE缓存

「爱情、让人受尽委屈。」 2024-03-22 17:07 126阅读 0赞
  • RAM(Random Access Memory):(redis是在这一层做的
     随机存储器,俗称内存,我们常说的电脑内存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。

  1. public class ThreadTest implements Runnable {
  2. public static volatile int sum = 0;
  3. public static void main(String[] args) {
  4. for (int i = 0; i < 3; i++) {
  5. new Thread (new ThreadTest (),"线程:"+i).start ();
  6. }
  7. }
  8. @Override
  9. public void run() {
  10. for (int i = 0; i < 10000; i++) {
  11. sum++;
  12. }
  13. System.out.println (Thread.currentThread ().getName ()+":"+sum);
  14. }
  15. }

执行结果:在这里插入图片描述

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

发表评论

表情:
评论列表 (有 0 条评论,126人围观)

还没有评论,来说两句吧...

相关阅读

    相关 NSURLCache内存缓存

     在IOS应用程序开发中,为了减少与服务端的交互次数,加快用户的响应速度,一般都会在IOS设备中加一个缓存的机制。使用缓存的目的是为了使用的应用程序能更快速的响应用户输入,是程