這期內(nèi)容當(dāng)中的小編將會給大家?guī)碛嘘P(guān)JVM內(nèi)存模型的介紹,以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
新洲網(wǎng)站建設(shè)公司創(chuàng)新互聯(lián)建站,新洲網(wǎng)站設(shè)計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為新洲數(shù)千家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站建設(shè)公司要多少錢,請找那個售后服務(wù)好的新洲做網(wǎng)站的公司定做!JVM是Java Virtual Machine(Java虛擬機)的縮寫,JVM是一種用于計算設(shè)備的規(guī)范,它是一個虛構(gòu)出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現(xiàn)的。
引入Java語言虛擬機后,Java語言在不同平臺上運行時不需要重新編譯。Java語言使用Java虛擬機屏蔽了與具體平臺相關(guān)的信息,使得Java語言編譯程序只需生成在Java虛擬機上運行的目標(biāo)代碼(字節(jié)碼),就可以在多種平臺上不加修改地運行。
計算機內(nèi)存模型
在程序運行時,CPU通過訪問主存獲取數(shù)據(jù),但隨著CPU的快速發(fā)展,CPU訪問速度越來越高,硬件無法滿足CPU的條件下,大多內(nèi)存加入了高速緩存機制,不同CPU都有對應(yīng)的多級(一般為三)緩存,CPU取數(shù)時會先按照一級緩存-二級緩存-三級緩存-主存的順序進行訪問,提高了訪問速度,但同時不同的CPU的緩存內(nèi)的數(shù)據(jù)可能是不一樣的,造成CPU與主存不能實現(xiàn)數(shù)據(jù)同步
JAVA內(nèi)存模型
JAVA內(nèi)存模型(Java Memory Model,JMM)是符合計算機內(nèi)存模型規(guī)范的,通過設(shè)置內(nèi)存屏障,屏蔽了不同硬件和操作系統(tǒng)的訪問差異的,保證java程序在不同平臺都能做到對內(nèi)存的訪問效果一致的機制及規(guī)范。
五大內(nèi)存區(qū)域
1.堆
2.程序計數(shù)器
每個線程都有程序計數(shù)器,程序計數(shù)器用來標(biāo)識當(dāng)前線程的程序字節(jié)碼的行號,java方法運行時,程序計數(shù)器保存的是字節(jié)碼文件的行號,native方法運行時,程序計數(shù)器的內(nèi)容為空,不同的線程擁有其專屬的程序計數(shù)器,為線程所私有
3.本地方法棧
4.JAVA虛擬機棧
每個方法在運行時都會創(chuàng)建一個棧幀,包括存儲局部變量表,操作棧,動態(tài)鏈接,方法出口等信息。每一個方法被調(diào)用的過程就對應(yīng)一個棧幀在虛擬機棧中從入棧到出棧的過程。
JAVA虛擬機棧主要用來存儲方法參數(shù),方法內(nèi)部的局部變量,編譯期間加載的數(shù)據(jù)類型和返回地址類型,為線程所私有
5.方法區(qū)
又稱為永久代,用來存放虛擬機加載的類信息,常量,靜態(tài)變量,是線程的共享區(qū)域,JDK8之后被廢棄,改用元空間
上述就是小編為大家分享的JVM內(nèi)存模型介紹,如果您也有類似的疑惑,不妨礙參照上述分析進行理解。如果想了解更多相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊。