最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JVM?運(yùn)行時(shí)數(shù)據(jù)區(qū)與JMM?內(nèi)存模型

 更新時(shí)間:2022年07月31日 08:26:50   作者:樹獺叔叔  
這篇文章主要介紹了JVM?運(yùn)行時(shí)數(shù)據(jù)區(qū)與JMM?內(nèi)存模型,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值。需要的朋友可以參考一下

1. JVM 運(yùn)行時(shí)數(shù)據(jù)區(qū)

JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)可以分為元空間,堆,虛擬機(jī)棧,本地方法棧,程序計(jì)數(shù)器五大塊。

  • 元空間(方法區(qū)):存放類模版對(duì)象,是線程共享的區(qū)域,在磁盤上,一般不會(huì)GC
  • 堆空間:線程共享的區(qū)域,對(duì)象創(chuàng)建與GC的主要陣地
  • 虛擬機(jī)棧:線程私有的,基本組成單位是棧幀,每個(gè)棧幀對(duì)應(yīng)一個(gè)方法,棧幀組成如下
    • 局部變量表:存放方法變量信息
    • 操作數(shù)棧:方法運(yùn)行的區(qū)域
    • 動(dòng)態(tài)鏈接:指向方法模板對(duì)象,與虛方法表一起實(shí)現(xiàn)方法重寫
    • 返回地址:方法的返回地址
  • 本地方法棧:線程私有,本地方法的執(zhí)行區(qū)域
  • 程序計(jì)數(shù)器:線程私有,負(fù)責(zé)在線程上下文切換的過程中記錄線程執(zhí)行到了哪個(gè)位置

2. JMM 內(nèi)存模型

硬件內(nèi)存模型

通常情況下,當(dāng)CPU需要讀取主存時(shí),它會(huì)將主存的部分讀到CPU緩存中或者內(nèi)部寄存器中,然后在寄存器中執(zhí)行操作。當(dāng)CPU需要將結(jié)果寫回到主存中去時(shí),它會(huì)將內(nèi)部寄存器的值刷新到緩存中,然后在某個(gè)時(shí)間點(diǎn)將值刷新回主存。

在多處理器系統(tǒng)中,每個(gè)處理器都有自己的高速緩存,而它們又共享同一主內(nèi)存,因此就會(huì)存在緩存一致性問題。為了解決一致性的問題,需要各個(gè)處理器訪問緩存時(shí)都遵循一些協(xié)議,在讀寫時(shí)要根據(jù)協(xié)議來進(jìn)行操作,這類協(xié)議有MSI、MESI等。

JMM

JMM內(nèi)存模型將內(nèi)容分為了線程私有內(nèi)存與主內(nèi)存兩部分,其與我們之前提到的硬件內(nèi)存模型的對(duì)應(yīng)關(guān)系如下所示:

私有內(nèi)存與主內(nèi)存的交互由如下八種操作控制:

3. 可見行與 volatile 關(guān)鍵字

一言以蔽之,volatile 關(guān)鍵字通過內(nèi)存屏障的形式來阻止指令重排,以維護(hù)變量的有序性與可見行。

一行代碼到執(zhí)行的過程中要經(jīng)歷以下的階段:

volatile 關(guān)鍵字有如下兩個(gè)作用:

  • 保證被 volatile 修飾的共享變量對(duì)所有線程總是可見的,也就是當(dāng)一個(gè)線程修改了被 volatile 修飾共享變量的值,新值總是可以被其他線程立即得知。
  • 禁止指令重排序優(yōu)化。

JVM中提供了四類內(nèi)存屏障指令:

  • loadload:兩個(gè)讀取操作之間
  • storestore:兩個(gè)寫操作之間
  • loadstore:讀寫操作之間
  • storelosd:寫讀操作之間

到此這篇關(guān)于JVM 運(yùn)行時(shí)數(shù)據(jù)區(qū)與JMM 內(nèi)存模型的文章就介紹到這了,更多相關(guān)JMM 內(nèi)存模型內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java使用軟引用實(shí)現(xiàn)緩存機(jī)制示例

    java使用軟引用實(shí)現(xiàn)緩存機(jī)制示例

    這篇文章主要為大家介紹了java使用軟引用實(shí)現(xiàn)緩存機(jī)制示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • SpringBoot通過自定義注解實(shí)現(xiàn)參數(shù)校驗(yàn)

    SpringBoot通過自定義注解實(shí)現(xiàn)參數(shù)校驗(yàn)

    實(shí)現(xiàn)參數(shù)校驗(yàn)說實(shí)話方式還挺多,個(gè)人使用過直接在Controller代碼里面寫、AOP+自定義注解、ConstraintValidator。本文主要和大家講的是ConstraintValidator實(shí)現(xiàn),感興趣的可以了解一下
    2022-12-12
  • 深入理解java內(nèi)置鎖(synchronized)和顯式鎖(ReentrantLock)

    深入理解java內(nèi)置鎖(synchronized)和顯式鎖(ReentrantLock)

    這篇文章主要介紹了Java多線程之內(nèi)置鎖(synchronized)和顯式鎖(ReentrantLock)的深入理解新的和用法,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • Java String類詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    Java String類詳解_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了Java String類詳解,本文經(jīng)多方資料的收集整理和歸納,最終撰寫成文,非常不錯(cuò),值得收藏,需要的的朋友參考下
    2017-04-04
  • SpringBoot項(xiàng)目Docker部署三種方式

    SpringBoot項(xiàng)目Docker部署三種方式

    本文主要介紹了SpringBoot項(xiàng)目Docker部署三種方式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-08-08
  • springboot實(shí)現(xiàn)定時(shí)任務(wù)@Scheduled方式

    springboot實(shí)現(xiàn)定時(shí)任務(wù)@Scheduled方式

    這篇文章主要介紹了springboot實(shí)現(xiàn)定時(shí)任務(wù)@Scheduled方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • Java?BOI與NIO超詳細(xì)實(shí)例精講

    Java?BOI與NIO超詳細(xì)實(shí)例精講

    在Java的軟件設(shè)計(jì)開發(fā)中,通信架構(gòu)是不可避免的,我們?cè)谶M(jìn)行不同系統(tǒng)或者不同進(jìn)程之間的數(shù)據(jù)交互,或者在高并發(fā)下的通信場(chǎng)景下都需要用到網(wǎng)絡(luò)通信相關(guān)的技術(shù),對(duì)于一些經(jīng)驗(yàn)豐富的程序員來說,Java早期的網(wǎng)絡(luò)通信架構(gòu)存在一些缺陷,這篇文章介紹Java?BOI與NIO
    2022-11-11
  • SpringBoot結(jié)合Neo4j自定義cypherSql的方法

    SpringBoot結(jié)合Neo4j自定義cypherSql的方法

    這篇文章主要介紹了SpringBoot結(jié)合Neo4j自定義cypherSql,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-11-11
  • 設(shè)計(jì)模式之責(zé)任鏈模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    設(shè)計(jì)模式之責(zé)任鏈模式_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要為大家詳細(xì)介紹了設(shè)計(jì)模式之責(zé)任鏈模式的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • Java計(jì)算交集,差集,并集的方法示例

    Java計(jì)算交集,差集,并集的方法示例

    這篇文章主要介紹了Java計(jì)算交集,差集,并集的方法,結(jié)合實(shí)例形式簡(jiǎn)單分析了java集合運(yùn)算的簡(jiǎn)單操作技巧,需要的朋友可以參考下
    2017-10-10

最新評(píng)論

海晏县| 湟中县| 类乌齐县| 于田县| 余姚市| 图们市| 衡水市| 易门县| 天台县| 罗山县| 资阳市| 永寿县| 东海县| 荔波县| 汉沽区| 奇台县| 昌江| 冷水江市| 巢湖市| 白城市| 呼和浩特市| 安义县| 杭锦后旗| 通化市| 石家庄市| 汽车| 青川县| 胶南市| 北川| 枝江市| 福建省| 景泰县| 南安市| 雅安市| 拜泉县| 双柏县| 商都县| 乐安县| 永宁县| 长岭县| 建水县|