java內(nèi)存模型jvm虛擬機(jī)簡(jiǎn)要分析
主內(nèi)存和工作內(nèi)存
- Java 內(nèi)存模型規(guī)定了所有的變量都存儲(chǔ)在主內(nèi)存中, 每條線(xiàn)程有自己的工作內(nèi)存
- 線(xiàn)程的工作內(nèi)存中保存了被該線(xiàn)程使用的變量的主內(nèi)存副本, 線(xiàn)程對(duì)變量的所有操作 (讀取、賦值等) 都必須在工作內(nèi)存中進(jìn)行, 而不能直接讀寫(xiě)主內(nèi)存中的數(shù)據(jù)
- 不同的線(xiàn)程之間也無(wú)法直接訪問(wèn)對(duì)方工作內(nèi)存中的變量, 線(xiàn)程間變量值的傳遞均需要通過(guò)主內(nèi)存來(lái)完成

內(nèi)存間的交互操作

原子性、可見(jiàn)性、有序性
Java 內(nèi)存模型是圍繞著在并發(fā)過(guò)程中如何處理原子性、可見(jiàn)性、有序性這三個(gè)特征來(lái)建立的
原子性
基本數(shù)據(jù)類(lèi)型的訪問(wèn)、讀寫(xiě)都是具備原子性的。synchronized 實(shí)現(xiàn)原子性
可見(jiàn)性
可見(jiàn)性是指當(dāng)一個(gè)線(xiàn)程修改了共享變量的值時(shí), 其他線(xiàn)程能夠立刻得知這個(gè)修改Java 內(nèi)存模型是通過(guò)在變量修改后將新值同步回主內(nèi)存, 在變量讀取前從主內(nèi)存刷新變量值這種依賴(lài)主內(nèi)存作為傳遞媒介的方式來(lái)實(shí)現(xiàn)可見(jiàn)性的volatile、synchronized、final 實(shí)現(xiàn)可見(jiàn)性
有序性
volatile、synchronized 實(shí)現(xiàn)有序性
以上就是java內(nèi)存模型jvm虛擬機(jī)簡(jiǎn)要分析的詳細(xì)內(nèi)容,更多關(guān)于java內(nèi)存模型jvm虛擬機(jī)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
mybatisplus的坑?insert標(biāo)簽insert?into?select無(wú)參數(shù)問(wèn)題的解決
這篇文章主要介紹了mybatisplus的坑?insert標(biāo)簽insert?into?select無(wú)參數(shù)問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-12-12
自帶IDEA插件的阿里開(kāi)源診斷神器Arthas線(xiàn)上項(xiàng)目BUG調(diào)試
這篇文章主要為大家介紹了自帶IDEA插件阿里開(kāi)源診斷神器Arthas線(xiàn)上項(xiàng)目BUG調(diào)試,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-06-06
java通過(guò)AES生成公鑰加密數(shù)據(jù)ECC加密公鑰
這篇文章主要為大家介紹了java通過(guò)AES生成公鑰加密數(shù)據(jù)ECC加密公鑰實(shí)現(xiàn)案例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn)
本篇教程給大家分享基于OAuth2.0授權(quán)系統(tǒng)的驗(yàn)證碼功能的實(shí)現(xiàn),驗(yàn)證碼功能的實(shí)現(xiàn)是采用Zuul網(wǎng)關(guān)的Filter過(guò)濾器進(jìn)行校驗(yàn)驗(yàn)證碼,具體實(shí)現(xiàn)代碼跟隨小編一起看看吧2021-05-05
Java Hutool 包工具類(lèi)推薦 ExcelUtil詳解
這篇文章主要介紹了Java Hutool 包工具類(lèi)推薦 ExcelUtil詳解,需要引入hutool包,版本號(hào)可根據(jù)實(shí)際情況更換,除hutool包之外,還需要引入操作Excel必要包,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-09-09
Java中JDBC連接池的基本原理及實(shí)現(xiàn)方式
本文詳細(xì)講解了Java中JDBC連接池的基本原理及實(shí)現(xiàn)方式,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-12-12
關(guān)于Java的HashMap多線(xiàn)程并發(fā)問(wèn)題分析
HashMap是采用鏈表解決Hash沖突,因?yàn)槭擎湵斫Y(jié)構(gòu),那么就很容易形成閉合的鏈路,這樣在循環(huán)的時(shí)候只要有線(xiàn)程對(duì)這個(gè)HashMap進(jìn)行g(shù)et操作就會(huì)產(chǎn)生死循環(huán),本文針對(duì)這個(gè)問(wèn)題進(jìn)行分析,需要的朋友可以參考下2023-05-05
SpringBoot應(yīng)用jar包啟動(dòng)原理詳解
本文主要介紹了SpringBoot應(yīng)用jar包啟動(dòng)原理詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-03-03
日志模塊自定義@SkipLogAspect注解跳過(guò)切面的操作方法
文章介紹了一個(gè)自定義注解@SkipLogAspect,用于在日志模塊中跳過(guò)特定方法的日志切面,這個(gè)注解可以用于需要避免大對(duì)象轉(zhuǎn)換為JSON時(shí)導(dǎo)致的OOM問(wèn)題,文章還提供了注解的實(shí)現(xiàn)代碼以及一個(gè)測(cè)試示例,展示了如何在控制器中使用該注解來(lái)跳過(guò)日志切面,感興趣的朋友一起看看吧2025-02-02

