jvm流程图_数据库

从以上流程图不难看出,一个.java源文件通过javac指令编辑成,再到加载进jvm的流程。

类加载器在jdk1.8版本由引导类加载器(BootstrapClassLoader)、扩展类加载器(ExtClassLoader)、应用类加载器(AppClassLoader)以及其它自定义类加载器四个种类。

  • 启动类加载器(引导类加载器,BootstrapClassLoader):这个ClassLoader类是用C++/C语言编写的,负责将<JAVA_HOME>/lib目录、-Xbootclasspath选项指定的目录或系统属性sun.boot.class.path指定的目录下的核心类库加载到内存中。源码文件是openjdk/hotspot/src/share/vm/classfile/classLoader.hpp扩展类加载器(ExtClassLoader):由ext目录下jar文件构成,父加载器为引导类加载器
  • 扩展类加载器:由sun.misc.Launcher$ExtClassLoader类 Java 实现,负责将<JAVA_HOME >/lib/ext目录或者由系统变量-Djava.ext.dir所指定的目录中的类库加载到内存中。
    源文件是 openjdk/jdk/src/share/classes/sun/misc/Launcher.java 内部类 $ExtClassLoader。
  • 应用类加载器(AppClassLoader):用类加载器由sun.misc.Launcher$AppClassLoader类 Java 实现,负责将由系统环境变量-classpath、-cp或系统属性java.class.path指定的路径下的类库加载到内存中。源文件是 openjdk/jdk/src/share/classes/sun/misc/Launcher.java 内部类 $AppClassLoader。
  • 自定义类加载器:用户自定义类加载器