cpu快取,主記憶體,執行緒的作業記憶體之間的關系。
我的疑惑是執行緒不是cpu調度單位嗎,cpu執行時,不就是執行緒的執行。那為什么cpu快取會去拿主記憶體資料。主要想了解cpu快取跟作業記憶體的關系?
uj5u.com熱心網友回復:
可以看下這篇文章 http://tutorials.jenkov.com/java-concurrency/java-memory-model.htmluj5u.com熱心網友回復:
你是關心thread里面堆疊記憶體和主行程堆疊記憶體的關系吧,CPU快取是作業系統層面的機制,個人理解JVM不會直接涉及到,就像內核態記憶體空間和用戶態記憶體空間一樣,JVM只會操作用戶態記憶體,內核態記憶體到用戶態都是OS處理的thread堆疊會根據violarity關鍵字決定怎么從主行程拿資料副本,這部分資料只保證在每次執行緒get的時候拿最新的,并不保證執行緒安全,如果你想執行緒安全需要加鎖,或者使用copyonwriteList/Array容器,這種會用寫時復制機制保障執行緒拿到最新的資料,且提高IO吞吐量
不知你是否時想了解這方面,還是說你想了解linux記憶體的細節
uj5u.com熱心網友回復:
CPU快取集成在CPU中,快取只是速度更快的存盤器,是CPU的存盤部分自動對主記憶體進行快取,一般沒有指令可用控制快取CPU只執行指令,對于CPU來說,沒有執行緒這個東西。執行緒是作業系統概念,并由作業系統管理。作業系統提供介面創建執行緒,分配CPU資源,執行執行緒。
CPU的存盤管理發現某段主記憶體使用頻繁,則快取到片內快取中,CPU快取對程式員來說是不可見。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/63190.html
標籤:Java相關
上一篇:Java學習大牛指導
