Java內存模型與硬件內存模型

硬件內存模型

不管是什么內存模型情龄,最終還是運行在計算機硬件上的,所以我們有必要了解計算機硬件內存架構



現(xiàn)代計算機一般都有2個以上CPU,而且每個CPU還有可能包含多個核心。因此塞祈,如果我們的應用是多線程的話,這些線程可能會在各個CPU核心中并行運行帅涂。

在CPU內部有一組CPU寄存器议薪,也就是CPU的儲存器。CPU操作寄存器的速度要比操作計算機主存快的多媳友。在主存和CPU寄存器之間還存在一個CPU緩存斯议,CPU操作CPU緩存的速度快于主存但慢于CPU寄存器。某些CPU可能有多個緩存層(一級緩存和二級緩存)醇锚。

當一個CPU需要訪問主存時捅位,會先讀取一部分主存數據到CPU緩存,進而在讀取CPU緩存到寄存器搂抒。當CPU需要寫數據到主存時,同樣會先flush寄存器到CPU緩存尿扯,然后再在某些節(jié)點把緩存數據flush到主存求晶。

JMM

Java內存模型即Java Memory Model,簡稱JMM衷笋。JMM定義了Java虛擬機在計算機內存中的工作方式芳杏。JVM是整個計算機虛擬模型,所以JMM是隸屬于JVM的辟宗。

Java內存模型定義了多線程之間共享變量的可見性以及如何在需要的時候對共享變量進行同步爵赵。原始的Java內存模型效率并不是很理想,因此Java1.5版本對其進行了重構泊脐,現(xiàn)在的Java8仍沿用了Java1.5的版本空幻。


在硬件內存模型里面關心的是不同CPU的緩存之間如何保證數據一致性,在Java內存模型里面關心的是不同線程之間的共享變量的一致性容客。

JVM對Java內存模型的實現(xiàn)

Java內存模型和硬件架構之間的橋接

Java內存模型和硬件內存架構并不一致秕铛。硬件內存架構中并沒有區(qū)分棧和堆约郁,從硬件上看,不管是棧還是堆但两,大部分數據都會存到主存中鬓梅,當然一部分棧和堆的數據也有可能會存到CPU寄存器中,如下圖所示谨湘,Java內存模型和計算機硬件內存架構是一個交叉關系:


支撐Java內存模型的基礎原理

  • 指令重排
  • 數據依賴性
  • as-if-serial
  • 內存屏障
  • happens-before

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末绽快,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子紧阔,更是在濱河造成了極大的恐慌坊罢,老刑警劉巖,帶你破解...
    沈念sama閱讀 207,248評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件寓辱,死亡現(xiàn)場離奇詭異艘绍,居然都是意外死亡,警方通過查閱死者的電腦和手機秫筏,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,681評論 2 381
  • 文/潘曉璐 我一進店門诱鞠,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人这敬,你說我怎么就攤上這事航夺。” “怎么了崔涂?”我有些...
    開封第一講書人閱讀 153,443評論 0 344
  • 文/不壞的土叔 我叫張陵阳掐,是天一觀的道長。 經常有香客問我冷蚂,道長缭保,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,475評論 1 279
  • 正文 為了忘掉前任蝙茶,我火速辦了婚禮艺骂,結果婚禮上,老公的妹妹穿的比我還像新娘隆夯。我一直安慰自己钳恕,他們只是感情好,可當我...
    茶點故事閱讀 64,458評論 5 374
  • 文/花漫 我一把揭開白布蹄衷。 她就那樣靜靜地躺著忧额,像睡著了一般。 火紅的嫁衣襯著肌膚如雪愧口。 梳的紋絲不亂的頭發(fā)上睦番,一...
    開封第一講書人閱讀 49,185評論 1 284
  • 那天,我揣著相機與錄音耍属,去河邊找鬼抡砂。 笑死大咱,一個胖子當著我的面吹牛,可吹牛的內容都是我干的注益。 我是一名探鬼主播碴巾,決...
    沈念sama閱讀 38,451評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼丑搔!你這毒婦竟也來了厦瓢?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,112評論 0 261
  • 序言:老撾萬榮一對情侶失蹤啤月,失蹤者是張志新(化名)和其女友劉穎煮仇,沒想到半個月后,有當地人在樹林里發(fā)現(xiàn)了一具尸體谎仲,經...
    沈念sama閱讀 43,609評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡浙垫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,083評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了郑诺。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片夹姥。...
    茶點故事閱讀 38,163評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖辙诞,靈堂內的尸體忽然破棺而出辙售,到底是詐尸還是另有隱情,我是刑警寧澤飞涂,帶...
    沈念sama閱讀 33,803評論 4 323
  • 正文 年R本政府宣布旦部,位于F島的核電站,受9級特大地震影響较店,放射性物質發(fā)生泄漏士八。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 39,357評論 3 307
  • 文/蒙蒙 一梁呈、第九天 我趴在偏房一處隱蔽的房頂上張望婚度。 院中可真熱鬧,春花似錦捧杉、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,357評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至灰粮,卻和暖如春仔涩,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背粘舟。 一陣腳步聲響...
    開封第一講書人閱讀 31,590評論 1 261
  • 我被黑心中介騙來泰國打工熔脂, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留佩研,地道東北人。 一個月前我還...
    沈念sama閱讀 45,636評論 2 355
  • 正文 我出身青樓霞揉,卻偏偏與公主長得像旬薯,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子适秩,可洞房花燭夜當晚...
    茶點故事閱讀 42,925評論 2 344