JMM

Java內(nèi)存模型JMM
Java內(nèi)存模型(即Java Memory Model ,簡稱JMM)本身是一種抽象的概念,并不真實存在,它描述的是- -組規(guī)則或規(guī)范,通過這組規(guī)范定義了程序中各個變量(包括實例字段,靜態(tài)字段和構(gòu)成數(shù)組對象的元素)的訪問方式。

JVM的運行實體是線程,每個線程創(chuàng)建時,JVM為其創(chuàng)造一個工作內(nèi)存,用于存儲線程私有的數(shù)據(jù),而java內(nèi)存模型規(guī)定所有內(nèi)存變量存儲在主內(nèi)存中,主內(nèi)存是共享內(nèi)存區(qū)域,所有線程都可以訪問,但線程對變量的操作必須在工作內(nèi)存中進(jìn)行,首先將變量從主內(nèi)存拷貝到自己的工作內(nèi)存中并進(jìn)行操作,操作完成后再將變量寫入主內(nèi)存,工作內(nèi)存是線程的私有區(qū)域

JMM中的主內(nèi)存
?存儲Java實例對象
?包括成員變量、類信息、常量、靜態(tài)變量等
?屬于數(shù)據(jù)共享的區(qū)域,多線程并發(fā)操作時會引|發(fā)線程安全問題

JMM與Java內(nèi)存區(qū)域劃分是不同的概念層次
?JMM描述的是一組規(guī)則,圍繞原子性,有序性、可見性展開
?相似點:存在共享區(qū)域和私有區(qū)域

主內(nèi)存與工作內(nèi)存的數(shù)據(jù)存儲類型以及操作方式歸納
?方法里的基本數(shù)據(jù)類型本地變量將直接存儲在工作內(nèi)存的棧幀結(jié)構(gòu)中
?引用類型的本地變量:引用存儲在工作內(nèi)存中,實例存儲在主內(nèi)存中
?成員變量、static變量、 類信息均會被存儲在主內(nèi)存中
?主內(nèi)存共享的方式是線程各拷貝- -份數(shù)據(jù)到工作內(nèi)存,操作完成
后刷新回主內(nèi)存

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容