类加载机制问题
1.类的完整生命周期
Java源文件(.java文件)通过 编译 成Java字节码文件(.class文件),通过 类加载 ,类加载分为4步,加载,验证,准备,解析.然后加载成Class对象, 实例化 为 实例对象,就可以使用,卸载了;
2.什么时候进行类加载呢?
1.使用new关键字实例化对象,读取或者设置一个类的静态变量的时候,调用类的静态方法也会进行类加载
2.对类使用反射调用的时候
3.初始化子类时,父类也会先被初始化;
4.对类使用动态代理的时候需要先被初始化
谈下你对双亲委派模型理解?
类的加载器有3个固定的类加载器.分别是:
启动类加载器(Bootstrao ClassLoader)
扩展类加载器(Extension Classloader)
应用类加载器(Aplication ClassLoader)
双亲委派模型就是当某个特定的类加载器在接到加载类的请求时,首先会将加载任务委托给它的父类加载器,依次的递归,如果父类加载器可以完成类加载的任务,那么就成功返回,只有当父类加载器无法完成此加载任务时,才自己去加载;
双亲委派模型好处
java类随着它的类加载器一起具备了带有优先级的层次关系,这样可以保证java程序的正常运行.