天天看點

JVM記憶體+JVM記憶體模型+垃圾回收算法Java類加載過程類加載器流程中的各加載器說明ClassLoader類的常用方法JVM記憶體模型總覽JVM垃圾回收算法

目錄

  • Java類加載過程
  • 類加載器流程中的各加載器說明
  • ClassLoader類的常用方法
  • JVM記憶體模型總覽
  • JVM垃圾回收算法
    • Minor GC
    • Major GC
    • Full GC

Java類加載過程

JVM記憶體+JVM記憶體模型+垃圾回收算法Java類加載過程類加載器流程中的各加載器說明ClassLoader類的常用方法JVM記憶體模型總覽JVM垃圾回收算法

類加載器流程中的各加載器說明

  1. 引導類加載器(Bootstrap ClassLoader):它用來加載 Java 的核心庫,是用原生代碼來實作的,并不繼承自 java.lang.ClassLoader。
  2. 擴充類加載器(Extension ClassLoader):它用來加載 Java 的擴充庫。Java 虛拟機的實作會提供一個擴充庫目錄。該類加載器在此目錄裡面查找并加載 Java 類。
  3. 應用程式類加載器(Application ClassLoader):它根據 Java 應用的類路徑(CLASSPATH)來加載 Java 類。一般來說,Java 應用的類都是由它來完成加載的。可以通過 ClassLoader.getSystemClassLoader()來擷取它。
  4. 使用者自定義加載器(User ClassLoader): 開發人員可以通過繼承 java.lang.ClassLoader類的方式實作自己的類加載器,以滿足一些特殊的需求。

ClassLoader類的常用方法

  • getParent() 傳回該類加載器的父類加載器。
  • loadClass(String name) 加載名稱為 name的類,傳回的結果是 java.lang.Class類的執行個體。
  • findClass(String name) 查找名稱為 name的類,傳回的結果是 java.lang.Class類的執行個體。
  • findLoadedClass(String name) 查找名稱為 name的已經被加載過的類,傳回的結果是 java.lang.Class類的執行個體。
  • defineClass(String name, byte[] b, int off, int len) 把位元組數組 b中的内容轉換成 Java 類,傳回的結果是 java.lang.Class類的執行個體。這個方法被聲明為 final的。
  • resolveClass(Class<?> c) 連結指定的 Java 類。

JVM記憶體模型總覽

JVM記憶體+JVM記憶體模型+垃圾回收算法Java類加載過程類加載器流程中的各加載器說明ClassLoader類的常用方法JVM記憶體模型總覽JVM垃圾回收算法

JVM垃圾回收算法

Minor GC

  • 從年輕代空間(包括 Eden 和 Survivor 區域)回收記憶體被稱為 Minor GC

Major GC

  • Major GC 是清理永久代。

Full GC

  • 清理整個堆空間—包括年輕代和永久代