Part1 JVM梳理知識點
Java 虛擬機,是一個可以執行 Java 字節碼的虛擬機進程。Java 源文件被編譯成能被 Java 虛擬機執行的字節碼文件( .class )。
跨平臺的是 Java 程序(包括字節碼文件),,而不是 JVM。JVM 是用 C/C++ 開發的,是編譯後的機器碼,不能跨平臺,不同平臺下需要安裝不同版本的 JVM 。
JVM 組成部分
- 類加載器,在 JVM 啟動時或者類運行時將需要的 class 加載到 JVM 中。
- 內存區,將內存劃分成若干個區以模擬實際機器上的存儲、記錄和調度功能模塊,如實際機器上的各種功能的寄存器或者 PC 指針的記錄器等。
- 執行引擎,執行引擎的任務是負責執行 class 文件中包含的字節碼指令,相當於實際機器上的 CPU 。
- 本地方法調用,調用 C 或 C++ 實現的本地方法的代碼返回結果。
好吧,下面來看看JVM的知識點梳理!
注意注意:無論是下面分享的JVM知識點梳理,還是學習路線,學習筆記,或者真題解析,都可以免費分享出來跟大家一起學習,私信我 “JVM” 即可免費下載領取!
1、類加載器
- 加載
- 驗證
- 準備
- 解析
- 初始化
2、對象的創建過程
- 檢查類是否被加載
- 為對象分配內存
- 為分配的內存空間初始化零值
- 為對象進行其他設置
- 執行 init 方法
3、對象的內存佈局
- 對象頭(markword)
- 實例數據(Instance Data)
- 對其填充(Padding)
- 預估對象大小
4、對象訪問
- 句柄訪問
- 直接指針
5、JVM 內存區域
- 虛擬機棧
- 本地方法棧
- 程序計數器
- 本地內存
- 堆
6、對象存活判斷
- 引用計數
- 可達性分析
- finalize
- 對象引用類型
7、垃圾回收算法
- 標記-清除
- 標記-整理
- 複製算法
- 分代算法
8、安全點
- 安全點
- 安全區域
9、JVM 垃圾回收器
- Serial (新生代)
- ParNew(新生代)
- Parallel Scavenge(新生代)
- Serial Old(老年代)
- Parallel Old(老年代)
- CMS(Concurrent Mark Sweep)(老年代)
- G1
- ZGC
Part2 JVM學習路線(xmind)
Part3 我的JVM學習筆記
給大家介紹一本學習書籍《Java虛擬機:JVM高級特性與最佳實踐》454頁的PDF,分為5個部分:走近java、啟動內存管理機制、虛擬機執行子系統、程序編譯與代碼優化、高效併發。
說到這個筆記,前些日子我自己還整理了一份JVM的筆記,也拿出來分享一下吧。這份JVM筆記我主要是分成了十個模塊:(1)JVM 內存結構、(2)HotSpot 虛擬機對象探秘、(3)垃圾收集策略與算法、(4)HotSpot 垃圾收集器、(5)內存分配與回收策略、(6)JVM 性能調優、(7)類文件結構、(8)類加載的時機、(9)類加載的過程、(10)類加載器
Part4 JVM真題解析
下面這些是我總結的一些面試常問的題目並附帶解析:
- 內存模型以及分區,需要詳細到每個區放什麼?
- 堆裡面的分區:Eden,survival (from+ to),老年代,各自的特點?
- 對象創建方法,對象的內存分配,對象的訪問定位?
- GC 的兩種判定方法?
- SafePoint 是什麼?
- GC 收集器有哪些?CMS 收集器與 G1 收集器的特點?
- Minor GC 與 Full GC 分別在什麼時候發生?
- 幾種常用的內存調試工具:jmap、jstack、jconsole、jhat?
- 類加載的幾個過程?
- JVM 內存分哪幾個區,每個區的作用是什麼?
- 如和判斷一個對象是否存活?(或者 GC 對象的判定方法)?
- 簡述 java 垃圾回收機制?
- java 中垃圾收集的方法有哪些?
- java 內存模型?
- java 類加載過程?
- 簡述 java 類加載機制?
- 類加載器雙親委派模型機制?
- 什麼是類加載器,類加載器有哪些?
- 簡述 java 內存分配與回收策率以及 Minor GC 和 Major GC?
- ... ...
詳細解析如下,篇幅原因就不一一給出答案了,不過以上說的這些都有整理成文檔,需要的話可以私信我 “JVM” 免費分享給你~
Part5 最後吧啦幾句
面試問到JVM恐怕早已是家常便飯了吧,也許你正在準備著和麵試官過招,那麼正好,我這份JVM面試速補:知識點梳理+學習路線+學習筆記+真題解析,全部分享給你夠不夠呢?夠不夠你輕鬆手撕面試官?
好吧,好像廢話有點多,點到為止吧,有需要即可免費分享下載學習
只需注意一下免費獲取方式:轉發 + 私信 “JVM” 即可免費分享下載!!!
閱讀更多 追逐仰望星空 的文章