成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

Java內(nèi)存模型與JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)的區(qū)別-創(chuàng)新互聯(lián)

首先,這兩者是完全不同的概念,絕對不能混為一談。

1.什么是Java內(nèi)存模型?

Java內(nèi)存模型是Java語言在多線程并發(fā)情況下對于共享變量讀寫(實(shí)際是共享變量對應(yīng)的內(nèi)存操作)的規(guī)范,主要是為了解決多線程可見性、原子性的問題,解決共享變量的多線程操作沖突問題。

普定ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價(jià)格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

多線程編程的普遍問題是:

  • 所見非所得
  • 無法肉眼檢測程序的準(zhǔn)確性
  • 不同的運(yùn)行平臺表現(xiàn)不同
  • 錯(cuò)誤很難復(fù)現(xiàn)

故JVM規(guī)范規(guī)定了Java虛擬機(jī)對多線程內(nèi)存操作的一些規(guī)則,主要集中體現(xiàn)在volatile和synchronized這兩個(gè)關(guān)鍵字。

  • volatile 是JVM提供的對共享變量在多線程讀寫時(shí)的可見性保證,主要作用是對volatile修飾的共享變量禁止被緩存(這里跟CPU的高速緩存和緩存一致性協(xié)議有關(guān)),不做重排序(重排序:在CPU處理速度遠(yuǎn)大于內(nèi)存讀寫速度的現(xiàn)狀下為了提高性能而進(jìn)行的優(yōu)化),但是并不保證共享變量操作的原子性。
  • synchronized 是JVM提供的鎖機(jī)制,通過鎖的特性和內(nèi)存屏障保證鎖住區(qū)域操作的原子性、可見性、有序性。
  • 鎖爭搶的是對象(static鎖的是類對象,非static鎖的是當(dāng)前對象,即this,鎖方法塊鎖的是自定義對象)在堆內(nèi)存中對象頭的一塊內(nèi)存的“主權(quán)”,只有一個(gè)線程能獲取該“主權(quán)”,即排他性,通過鎖的排他性保證對鎖住區(qū)域的操作的原子性
  • 通過在代碼前后加入加載屏障(Load?Barrier)和存儲屏障(Store Barrier),能保證鎖住代碼塊或者方法中對共享變量的操作的可見性
  • 通過在代碼前后加入獲取屏障(Acquire?Barrier)和釋放屏障(Release?Barrier),能保證鎖住代碼塊或者方法中對共享變量的操作的有序性

2.什么是JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)?

JVM運(yùn)行時(shí)數(shù)據(jù)區(qū),是Java虛擬機(jī)在運(yùn)行時(shí)對該Java進(jìn)程占用的內(nèi)存進(jìn)行的一種邏輯上的劃分,包括方法區(qū)、堆內(nèi)存、虛擬機(jī)棧、本地方法棧、程序計(jì)數(shù)器。這些區(qū)塊實(shí)際都是Java進(jìn)程在Java虛擬機(jī)的運(yùn)作下通過不同數(shù)據(jù)結(jié)構(gòu)來對申請到的內(nèi)存進(jìn)行不同使用。

  • 方法區(qū):JVM用來存儲加載的類信息、常量、靜態(tài)變量、編譯后的代碼等數(shù)據(jù)。不同虛擬機(jī)有不同的實(shí)現(xiàn),oracle的HotSpot在Java7中方法區(qū)放在永久代,Java8中方法區(qū)放在元空間,并通過GC機(jī)制來管理。
  • 虛擬機(jī)棧:每個(gè)線程私有的空間,由多個(gè)棧幀組成,一個(gè)方法對應(yīng)一個(gè)棧幀,棧幀包括局部變量表、操作數(shù)棧、動(dòng)態(tài)鏈接、方法返回地址、附加信息等。棧內(nèi)存默認(rèn)大1M,超出跑出StackOverFlowError。
  • 本地方法棧:類似虛擬機(jī)棧,是為虛擬機(jī)使用native本地方法而準(zhǔn)備的。具體實(shí)現(xiàn)由虛擬機(jī)廠商來實(shí)現(xiàn)。HotSpot虛擬機(jī)中實(shí)現(xiàn)與虛擬機(jī)棧一致,同時(shí)超出大小拋StackOverFlowError。
  • 程序計(jì)數(shù)器:記錄當(dāng)前線程執(zhí)行字節(jié)碼的位置,存儲的是字節(jié)碼指令地址,如果native方法,則為空。CPU同一時(shí)間只能執(zhí)行一條線程中的指令,線程切換后通過程序計(jì)數(shù)器來恢復(fù)正確的執(zhí)行位置。
  • 堆內(nèi)存:所有線程都可以訪問修改,存放的是對象實(shí)例,是數(shù)據(jù)區(qū)中占用空間大的部分,在HotSpot虛擬機(jī)中分為新生代和老年代,新生代又分為Eden區(qū)和Survivor0區(qū)、Survivor1區(qū)。

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

標(biāo)題名稱:Java內(nèi)存模型與JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)的區(qū)別-創(chuàng)新互聯(lián)
當(dāng)前URL:http://jinyejixie.com/article28/ccjpcp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站營銷、App設(shè)計(jì)、關(guān)鍵詞優(yōu)化網(wǎng)站內(nèi)鏈、虛擬主機(jī)、企業(yè)網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
寻乌县| 玉龙| 昆山市| 崇信县| 栾城县| 屯留县| 明星| 六枝特区| 黄平县| 上虞市| 措勤县| 东海县| 雅江县| 轮台县| 泰宁县| 那坡县| 顺平县| 聊城市| 三都| 梁山县| 达日县| 建湖县| 荥阳市| 河池市| 镇康县| 吴旗县| 谢通门县| 苍南县| 汤原县| 肇东市| 井陉县| 乳源| 华阴市| 温宿县| 会泽县| 惠东县| 光泽县| 黄陵县| 鹰潭市| 吐鲁番市| 琼结县|