Java記憶體模型

來源:互聯網
上載者:User

標籤:處理器   問題   http   完成   lock   過程   ges   值傳遞   logs   

硬體裝置

  處理器的運算速度很快,但是處理器又要和記憶體打交道,讀取運算資料、儲存運算結果的過程很緩慢,此時需要一個快取,運算時將資料複製到緩衝中,運算完成後將結果同步會記憶體,處理器無需等待記憶體讀寫加快速度。但是會產生緩衝一致性問題,需要依賴一定的協議。“記憶體模型”可以理解為在特定的協議下,對特定的記憶體或快取進行讀寫訪問的過程抽象。 

  

Java記憶體模型 主記憶體和工作記憶體

  所有的變數都儲存在主記憶體中(與硬體主記憶體類比,線程共用,主要對應Java堆中的執行個體資料)。每條線程都有自己的工作記憶體(與硬體快取類比,線程不共用,主要對應虛擬機器棧中的部分資料),線程的工作記憶體儲存了該線程使用到的變數的主記憶體副本拷貝,線程對變數的操作(讀寫、賦值)都在工作記憶體中進行,不能直接操作主記憶體的變數,不同線程之間不能互相訪問對方工作記憶體中的變數,只能通過主記憶體來訪問。

  

主記憶體與工作記憶體之間的互動操作

  lock(鎖定):作用於主記憶體的變數,將主記憶體中的一個變數標誌為一條線程獨佔狀態。

  unlock(解鎖):作用於主記憶體的變數,將標識為線程獨佔狀態的變數釋放出啦,之後才能被其他線程 lock。

  read(讀取):作用於主記憶體的變數,將一個變數的值傳輸到工作記憶體中,以便 load 操作。

  load(載入):作用於工作記憶體的變數,把 read 操作得到的變數值放入到變數副本中。

  use(使用):作用於工作記憶體的變數,將變數的值傳遞給執行引擎,虛擬機器遇到使用變數的值的位元組碼指令時執行該操作。

  assign(賦值):作用於工作記憶體的變數,把從執行引擎獲得的值賦值給工作記憶體的變數,虛擬機器遇到給變數賦值的位元組碼指令時執行該操作。

  store(儲存):作用於工作記憶體的變數,將變數傳送到主記憶體中,以便 write 操作。

  write(寫入):作用於主記憶體的變數,把 store 操作得到的變數值放入到主記憶體的變數中。

 

Java記憶體模型

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.