Java 虛擬機是學習 Java 的基礎,也是邁入高級 Java 開發工程師的必備知識點。所以今天這篇文章我們來聊聊如何從零開始學習 Java 虛擬機。
基礎
對於剛剛接觸 JVM 的同學來說,JVM 就像一個黑盒一樣,完全不知道這是一個什么東西。所以對於小白來說,最重要是搞清楚 JVM 到底是干嘛的,以及其常用的知識框架。針對這樣的需求,我之前寫過一個 JVM 系列文章,從零開始循序漸進地介紹了 JVM,相信是很不錯的 JVM 入門教程。
- JVM基礎系列開篇:為什么要學虛擬機?
- JVM基礎系列第1講:Java 語言的前世今生
- JVM基礎系列第2講:Java 虛擬機的歷史
- JVM基礎系列第3講:到底什么是虛擬機?
- JVM基礎系列第4講:從源代碼到機器碼,發生了什么?
- JVM基礎系列第5講:字節碼文件結構
- JVM基礎系列第6講:Java虛擬機內存結構
- JVM基礎系列第7講:JVM類加載機制
- JVM基礎系列第8講:JVM 垃圾回收機制
- JVM基礎系列第9講:JVM垃圾回收器
- JVM基礎系列第10講:垃圾回收的幾種類型
- JVM基礎系列第11講:JVM參數之堆棧空間配置
- JVM基礎系列第12講:JVM參數之查看JVM參數
- JVM基礎系列第13講:JVM參數之追蹤類信息
- JVM基礎系列第14講:JVM參數之GC日志配置
- JVM基礎系列第15講:JDK性能監控命令
看完了我寫的教程之后,你應該對 JVM 有了基本的理解。這時候你可以看一下《深入理解Java虛擬機》,這本書是國內學習 JVM 的必備書籍。通過閱讀這本書,你對 JVM 的一些知識點會了解得更加全面。
實戰
當你對 JVM 有了一定的認知,這時候就可以嘗試去解決一些 JVM 問題了。在這個階段推薦的書籍是:《Java虛擬機實戰》。與《深入理解Java虛擬機》不同,這本書更加側重於實戰,有許多的實戰例子。
看完《Java虛擬機實戰》之后,你基本上知道如何排查 JVM 問題。但是你只是掌握了理論技能,你要在工作中爭取到線上排查的機會,把你的理論付諸於實踐。只有不斷地融合和實踐,才能使得你的經驗非常豐富(還記得之前說過的「整體性學習方法」嗎?)。
深入
經過理論+實戰的洗禮,你已經從一個小白變成了老鳥。但這個時候你或許還會對 JVM 的一些細節不夠了解,這個時候你需要閱讀《Java虛擬機規范》。因為在這之前你看的《深入理解Java虛擬機》、《Java虛擬機實戰》等書籍,全部都是二手信息。而《Java虛擬機規范》則是關於 Java 虛擬機的規定,是一手信息。看完它,我相信你對 Java 虛擬機的理解會更上一層樓。
我看《Java虛擬機規范》的時候寫了一些筆記,如果有興趣可以閱讀相關文章。
- JVM規范系列開篇:為什么要讀JVM規范?
- JVM規范系列第1章:引言
- JVM規范系列第2章:Java虛擬機結構
- JVM規范系列第3章:為Java虛擬機編譯
- JVM規范系列第4章:Class文件格式
- JVM規范系列第5章:加載、鏈接與初始化
- JVM規范系列第6章:Java虛擬機指令集
- JVM規范系列:總結
看完了《Java虛擬機規范》,如果你還有興趣,那么你可以開始閱讀 HotSpot 虛擬機的源碼了。所有細節在源碼面前都盡顯本色,相信到了這一階段,你已經不需要我的指導了。盡情暢游於 JVM 源碼的海洋吧~
總結
JVM 本身比較難懂,但按照我提供的線路圖去學習,整個的學習曲線不會很陡。只要願意付出時間和精力,還是可以很快地學會 JVM 基礎知識的。
