JVM體系分為4塊:
類的加載機制JVM內存機構GC算法 垃圾回收GC分析 命令調優類的加載機制:
類的加載是將類的.class文件中的二進制數據從磁盤加載到內存中,將其放在運行時數據區的方法區內,然后在堆區創建一個java.lang.class 對象,用來封裝類在方法區內的數據結構。類的加載的最終產品是位于堆區中的class對象,并向Java程序員提供了訪問方法區內的數據結構的接口。類的生命周期: 加載 →連接(驗證→準備→解析)→初始化
類加載器:
類加載機制: 全盤負責:當一個類加載器負責加載某個class時,該class所依賴的和所引用的其他class也將由該類的加載器負責載入,除非顯示地使用另外一個類加載器來載入父類委托:當一個class需要被加載時,會先調用啟動類加載器(Bootstrap ClassLoader ) ,加載器查找其加載路徑下是否有此class文件,有則加載,沒有則交給子加載器去加載,依次類推緩存機制:緩存機制將會保證所有加載過的class都會被緩存,當程序中需要使用某個class時,類加載器先從緩存區尋找該class,只有緩存區不存在,系統才會讀取該類對應的二進制數據,并將起轉換成class對象,存入緩存區JVM內存結構: 
GC算法 垃圾回收:
對象存活判斷
引用計數:每個對象有一個引用計數屬性,新增一個此對象時,計數加1,引用釋放時計數減1,當對象的引用計數為0時,可以回收不可達分析:從GC Roots開始往下搜索,搜索走過的路徑稱為引用鏈,當一個對象到GC Roots沒有任何引用鏈時,則證明此對象不可用的,不可達對象GC算法:
標記-清除算法:標記所有需要回收的對象,然后統一回收
復制算法:內存分為大小相同的兩塊,每次用一塊,滿了,將活著的復制到另一塊中
標記-壓縮算法: 標記過程仍然與“標記-清除”算法一樣,但后續步驟不是直接對可回收對象進行清理,而是讓所有存活的對象都向一端移動,然后直接清理掉端邊界以外的內存
分段收集算法:“分代收集”(Generational Collection)算法,把Java堆分為新生代和老年代,這樣就可以根據各個年代的特點采用最適當的收集算法。
GC分析 命令調優
此處后期補充 :)
更詳細:JVM知識點總結
新聞熱點
疑難解答