目录
- Java类加载过程
- 类加载器流程中的各加载器说明
- ClassLoader类的常用方法
- JVM内存模型总览
- JVM垃圾回收算法
-
- Minor GC
- Major GC
- Full GC
Java类加载过程
类加载器流程中的各加载器说明
- 引导类加载器(Bootstrap ClassLoader):它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自 java.lang.ClassLoader。
- 扩展类加载器(Extension ClassLoader):它用来加载 Java 的扩展库。Java 虚拟机的实现会提供一个扩展库目录。该类加载器在此目录里面查找并加载 Java 类。
- 应用程序类加载器(Application ClassLoader):它根据 Java 应用的类路径(CLASSPATH)来加载 Java 类。一般来说,Java 应用的类都是由它来完成加载的。可以通过 ClassLoader.getSystemClassLoader()来获取它。
- 用户自定义加载器(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垃圾回收算法
Minor GC
- 从年轻代空间(包括 Eden 和 Survivor 区域)回收内存被称为 Minor GC
Major GC
- Major GC 是清理永久代。
Full GC
- 清理整个堆空间—包括年轻代和永久代