天天看點

并發程式設計的底層原理

1.底層原理簡介

在早期,JVM會将相同的.class檔案(位元組碼檔案)翻譯成不同的機器指令,在不同作業系統的平台上,無法保證一緻的并發安全。是以,需要有一個規範來保證安全一緻的并發安全效果。

2.JVM記憶體結構

JVM記憶體結構是和Java虛拟機的運作時區域相關的結構。其結構圖和各結構作用如下所示。

并發程式設計的底層原理

堆:堆是用來存放執行個體對象的記憶體空間。如果這些執行個體對象不再被引用時,會被垃圾回收器回收。堆的記憶體空間是動态配置設定的。

虛拟機棧:虛拟機棧是用來存放Java基本資料類型以及對象引用的存儲空間。在編譯的時候就确定了大小,并且在運作時不會改變大小。

方法區:方法區是用來存放已經加載的靜态變量、類資訊、常量資訊以及永久引用(如static修飾的對象)的存儲空間。

本地方法棧:本地方法棧是用來存放本地方法(native修飾的方法)執行時所産生的資料的記憶體空間。

程式計數器:程式計數器是用來存放目前線程正在執行的位元組碼的行号資訊的記憶體空間。3.Java記憶體模型

Java記憶體模型(JMM)是和Java并發程式設計相關的模型,是需要各個JVM的實作來遵守的一組規範,以便開發者可以利用這些規範,開發多線程程式。如果沒有這個規範,那麼很可能會出現同一份多線程代碼在不同的虛拟機上運作的結果不一樣。

繼續閱讀