#Java#互联网大厂面试必问的Java内存模型以及并发编程

文章图片

文章图片

文章图片

文章图片

文章图片
点击上方? , 轻松关注!及时获取有趣有料的技术文章
? 面试官:你知道 Java 内存模型 JMM 吗?那你知道它的三大特性吗?Java 是如何解决指令重排问题的?既然CPU有缓存一致性协议(MESI) , 为什么 JMM 还需要volatile关键字?前两天看到同学和我显摆他们公司配的电脑多好多好 , 我默默打开了自己的电脑 , 酷睿 i7-4770 , 也不是不够用嘛 , 4 核 8 线程的 CPU , 也是杠杠的 。
扯这玩意干啥 , Em~~~~
介绍 Java 内存模型之前 , 先温习下计算机硬件内存模型
硬件内存架构计算机在执行程序的时候 , 每条指令都是在 CPU 中执行的 , 而执行的时候 , 又免不了要和数据打交道 。 而计算机上面的数据 , 是存放在主存当中的 , 也就是计算机的物理内存 。
计算机硬件架构简易图:
我们以多核 CPU 为例 , 每个CPU 核都包含一组 「CPU 寄存器」 , 这些寄存器本质上是在 CPU 内存中 。 CPU 在这些寄存器上执行操作的速度要比在主内存(RAM)中执行的速度快得多 。
因为CPU速率高 ,内存速率慢 , 为了让存储体系可以跟上CPU的速度 , 所以中间又加上 Cache 层 , 就是我们说的 「CPU 高速缓存」 。
CPU多级缓存由于CPU的运算速度远远超越了1级缓存的数据I\\O能力 , CPU厂商又引入了多级的缓存结构 。 通常L1、L2 是每个CPU 核有一个 , L3 是多个核共用一个 。
Cache LineCache又是由很多个「缓存行」(Cache line) 组成的 。 Cache line 是 Cache 和 RAM 交换数据的最小单位 。
Cache 存储数据是固定大小为单位的 , 称为一个Cache entry , 这个单位称为Cache line或Cache block 。 给定Cache 容量大小和 Cache line size 的情况下 , 它能存储的条目个数(number of cache entries)就是固定的 。 因为Cache 是固定大小的 , 所以它从主内存获取数据也是固定大小 。 对于X86来讲 , 是 64Bytes 。 对于ARM来讲 , 较旧的架构的Cache line是32Bytes , 但一次内存访存只访问一半的数据也不太合适 , 所以它经常是一次填两个 Cache line , 叫做 double fill 。
缓存的工作原理这里的缓存的工作原理和我们项目中用 memcached、redis 做常用数据的缓存层是一个道理 。
当 CPU 要读取一个数据时 , 首先从缓存中查找 , 如果找到就立即读取并送给CPU处理;如果没有找到 , 就去内存中读取并送给 CPU 处理 , 同时把这个数据所在的数据块(就是我们上边说的 Cache block)调入缓存中 , 即把临近的共 64 Byte 的数据也一同载入 , 因为临近的数据在将来被访问的可能性更大 , 可以使得以后对整块数据的读取都从缓存中进行 , 不必再调用内存 。
这就增加了CPU读取缓存的命中率(Cache hit)了 。
计算机层级存储计算机存储系统是有层次结构的 , 类似一个金字塔 , 顶层的寄存器读写速度较高 , 但是空间较小 。 底层的读写速度较低 , 但是空间较大
- 「互联网圈里人」你会操作吗?,微信可转账至QQ钱包
- 米家互联网洗烘一体机1C:米家互联网洗烘一体机1C发布:除菌率高达99.9% 支持小爱
- 「思维教授」不妨试试这个冷门行业,互联网创业:想在网络上暴利赚钱
- #杨龙伟卤菜店#如何利用互联网思维打造现卤现捞品牌
- 互联网乱侃先生@还债有望了?一场直播卖货1.7亿,罗永浩终于找对了方向
- 【独立保险经纪人平台】独立保险经纪人的发展红利——互联网保险
- 【互联网有爆料】414乐迷节期间销量将猛增,乐视电视或签约罗永浩
- 「三言车说」中小企业如何破题互联网场景“推广迷局”?
- 互联网揭秘▲为何国内不敌阿里京东?国外帅小伙答案令人信服,电商巨头亚马逊
- 【三言财经】全球移动互联网大会GMIC宣布改为4月25-27日线上举办
