天天看点

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

  • 清理整个堆空间—包括年轻代和永久代