类加载器分类
引导类加载器(BootstrapLoader):加载jdk核心类库,由c++语言编写
扩展类加载器(ExtClassLoader):加载jdk的扩展类库,由java语言编写
应用程序类加载器(AppClassLoader):加载classpath路径下的类包,由java语言编写
自定义类加载器:加载自定义路径下的类包,需继承ClassLoader类,其核心方法为loaderClass(实现双亲委派机制)和findClass,jdk中的findClass默认为空实现,自定义类加载器时主要是重写findClass方法,调用defineClass加载类,defineClass底层基本由本地方法(即c++语言编写的方法)实现
Java命令执行代码流程
程序调用类的main方法:
windows系统中的java.exe创建JVM
JVM创建引导类加载器bootstrapLoader
bootstrapLoader创建JVM启动器实例launcher(单例模式)
launcher的构造方法中创建extClassLoader和appClassLoader
appClassLoader调用loadclass加载需要运行的类到JVM
JVM执行类的入口main方法
程序执行完成JVM销毁
类加载流程
1