來自:程式員書庫(ID:OpenSourceTop)
綜合自:《深入理解Java虛擬機器 – JVM高階特性與最佳實踐 》一書、豆瓣
每個使用Java的開發人員都知道,JRE最重要的元素就是Java虛擬機器(JVM),但許多開發人員對於JVM是如何執行的並不瞭解,因為就算你沒有深入瞭解JVM,你一樣可以開發出一些優秀的應用和庫,不過要是你瞭解了JVM,那對你理解Java就會有很大的幫助
在國內,有關Java API、Java語言語法及第三方框架的技術資料和書籍非常多,但有關Java虛擬機器的資料卻很少,不過少並不意味著沒有,比如本文要和大家推薦的這本書,就是一本難得的原生中文書籍——《深入理解Java虛擬機器 – JVM高階特性與最佳實踐 》
-
豆瓣評分8.9,好評如潮
-
Java領域公認的經典著作和超級暢銷書
如果你有留意程式員書庫的【計算機書籍每週銷量排行】,你就不難發現這本書基本每週都會上榜;而且第1版在兩年內就印刷近10次,由此可見其銷量有多麼驚人。
這是一本關於JVM的經典書籍,共分為五大部分,圍繞記憶體管理、執行子系統、程式編譯與最佳化、高效併發等核心主題對JVM進行了全面而深入的分析,深刻揭示了JVM的工作原理。
閱讀路線
第一部分:從宏觀的角度介紹了整個Java技術體系、Java和JVM的發展歷程、模組化,以及JDK的編譯,這對理解書中後面內容有重要幫助。
第二部分:講解了JVM的自動記憶體管理,包括虛擬機器記憶體區域的劃分原理以及各種記憶體上限溢位異常產生的原因;常見的垃圾收集演演算法以及垃圾收集器的特點和工作原理;常見虛擬機器監控與故障處理工具的原理和使用方法。
第三部分:分析了虛擬機器的執行子系統,包括類檔案結構、虛擬機器類載入機制、虛擬機器位元組碼執行引擎。
第四部分:講解了程式的編譯與程式碼的最佳化,闡述了泛型、自動裝箱拆箱、條件編譯等語法糖的原理;講解了虛擬機器的熱點探測方法、HotSpot的即時編譯器、編譯觸發條件,以及如何從虛擬機器外部觀察和分析JIT編譯的資料和結果;
第五部分:探討了Java實現高效併發的原理,包括JVM記憶體模型的結構和操作;原子性、可見性和有序性在Java記憶體模型中的體現;先行發生原則的規則和使用;執行緒在Java語言中的實現原理;虛擬機器實現高效併發所做的一系列鎖最佳化措施。
第二版有何改進?
有的人可能已經讀過第1版了,想知道第二版有哪些改進,這邊我們也幫大家整理出來了:
-
技術平臺從JDK 1.6提升至JDK 1.7
-
對於功能點的講解變為直接使用OpenJDK中的HotSpot原始碼或者JIT編譯器生成的原生代碼
-
增加了許多對處理JVM常見問題技能的講解,包括如何分析GC日誌、如何分析JIT編譯器程式碼最佳化過程等。
-
新增許多處理JVM問題的實踐案例
-
最後就是修正了一些第一版中的錯誤之處
豆瓣書評
@ Gabriel Fu:難得的優秀的原生中文書籍,中間沒有翻譯這一層感覺好很多,讀起來比外文原版書也更輕鬆
@ 二十而立:淺顯易懂。最重要的是開啟一扇理解虛擬機器的大門。記憶體管理機制與Java記憶體模型、高效併發這三章是特別實用的。
@ 匿名:知識點改寫面廣,原理解釋透徹,含有大量Demo案例,是一本具有相當深度的作品。美中不足的是概念的輕重順序不夠有條理,專有名詞不加解釋,甚至出現相同概念使用不同專有名詞的情況,可能也是乾貨太多的副作用吧,總的來說瑕不掩瑜,jvm門檻不低,作者做到了深入淺出,功力確實不一般。
@ 散關清渭:之前也看過第一版 第二版比第一版有不少增改 主要是G1 這部分多了一章內容 還是與時俱進的 挺好~~~
@匿名:作者寫的非常好,深入淺出的講解了虛擬機器的各個部分。是國內計算機出版難得的好書。
寫在最後
總而言之,這本書值得你去多次研讀,讓你站在一個更高的角度去理解Java開發。雖說網上有很多JVM資料,但內容魚龍混雜,看太多可能還有反效果,所以想要系統的學習一門知識,最簡單的方式最好還是書籍