深入理解JAVA內存模型從最基礎、排版、jmm設計等多方面為大家講訴模型的建立和使用,全書共分為五大部分,圍繞內存管理、執行子系統、程序編譯與優化、高效并發等核心主題對JVM進行了全面而深入的分析,深刻揭示了JVM的工作原理!
內容概括
第1部分,基本概念
包括“并發、同步、主內存、本地內存、重排序、內存屏障、happensbefore規則、as-if-serial規則、數據依賴性、順序一致性模型、JMM的含義和意義”。
第2部分,同步機制
該部分中就介紹了“同步”的3種方式:volatile、鎖、final。對于每一種方式,從該方式的“特性”、“建立的happensbefore關系”、“對應的內存語義”、“實現方式”等幾個方面進行了分析說明。實際上,JMM保證“如果程序正確同步,則執行結果與順序一致性內存模型的結果相同”的機制;而這部分這是確保程序正確同步的機制。
深入理解java<a href=虛擬機" src="http://pic.xz7.com/upload/2017-8/201783174927431530.png" width="403" height="525"/>
第3部分,JMM總結
JMM保證:如果程序是正確同步的,程序的執行將具有順序一致性。
從JMM設計者的角度來說,在設計JMM時,需要考慮兩個關鍵因素:
(01)程序員對內存模型的使用。程序員希望內存模型易于理解,易于編程。程序員希望基于一個強內存模型(程序盡可能的順序執行)來編寫代碼。
(02)編譯器和處理器對內存模型的實現。編譯器和處理器希望內存模型對它們的束縛越少越好,這樣它們就可以做盡可能多的優化(對程序重排序,做盡可能多的并發)來提高性能。編譯器和處理器希望實現一個弱內存模型。
JMM設計就需要在這兩者之間作出協調。JMM對程序采取了不同的策略:
(01)對于會改變程序執行結果的重排序,JMM要求編譯器和處理器必須禁止這種重排序。
(02)對于不會改變程序執行結果的重排序,JMM對編譯器和處理器不作要求(JMM允許這種重排序)。
深入理解java內存模型電子書目錄
深入理解java內存模型(一)——基礎
深入理解java內存模型(二)——重排序
深入理解java內存模型(三)——順序一致性
深入理解java內存模型(四)——volatile
深入理解java內存模型(五)——鎖
深入理解java內存模型(六)——final
深入理解java內存模型(七)——總結