- jvm加载类过程
java原文件(.java文件)经过编译生成.class文件,运行时JVM中的类加载器(ClassLoader)将.class文件加载到内存中,经过初始化生成一个唯一的Class对象,它就像是一个模板,通过这个Class,就可以new出多个实例对象,同时通过每个实例对象也可以反过来找到这个Class(反射机制),也可以找到类加载器,如上图所示。
JVM中提供了三层的ClassLoader:
Bootstrap classLoader:主要负责加载核心的类库(java.lang.*等),构造ExtClassLoader和APPClassLoader。
ExtClassLoader:主要负责加载jre/lib/ext目录下的一些扩展的jar。
AppClassLoader:主要负责加载应用程序的主函数类
**其中加载过程分为:**双亲委派机制:
1、类加载器收到类加载的请求;
2、将这个请求委托给父类加载器去完成,一直向上委托,直到根加载器或者说启动类加载器;
3、启动类加载器检查是否能够加载这个类,能加载就结束,使用当前类加载器,否则,抛出异常,通知子加载器进行加载;
4、重复步骤三。
null:java调用不到大多数原因是调用了native方法(C,C++)。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)