深入理解类加载机制
一、类的来源(本地文件、本地jar包、网络数据)
二、类的加载时机(new 一个对象、引用类静态变量、调用类的静态方法、反射机制加载类、)
三、类加载器(bootstrapclassloader、extClassLoader、SystemClassLoader )
四、类加载机制
1、(全盘负责、双亲委派、缓存机制)
2、类加载过程(加载、连接(验证、准备(类变量分配内存、赋默认零值)、解析)、初始化)
3、双亲委派机制,其工作原理的是,如果一个类加载器收到了类加载请求,它并不会自己先去加载,而是把这个请求委托给父类的加载器去执行,如果父类加载器还存在其父类加载器,则进一步向上委托,依次递归,请求最终将到达顶层的启动类加载器,如果父类加载器可以完成类加载任务,就成功返回,倘若父类加载器无法完成此加载任务,子加载器才会尝试自己去加载,这就是双亲委派模式,即每个儿子都很懒,每次有活就丢给父亲去干,直到父亲说这件事我也干不了时,儿子自己才想办法去完成
五、forName和loaderClass区别 Class.forName()得到的class是已经初始化完成的。 Classloader.loaderClass得到的class是还没有链接(验证,准备,解析三个过程被称为链接)的