ClassLoader&双亲委派
文章目录 1.class sycle 2 不同类加载器说明 3.ClassLoader加载类过程(双亲委派) 4.ClassLoader加载类过程(双亲委派流程图) 5.为什么需要双亲委派机制? 6.能不能自己写个类叫java.lang.System? 7.如何自定义类加载器 8.如何打破双亲委派? 9.例子 1.class sycle 类加载的生命周期:加载(Loading)–>验证(Verification)–>准备(Preparation)–>解析(Resolution)–>初始化(Initialization)–>使用(Using)–>卸载(Unloading) 关注点1: loading 将class 二进制文件加载到内存中 通过一个类的全限定名来获取定义此类的二进制字节流。 将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 在java堆中生成一个代表这个类的java.lang.Class对象,做为方法区这些数据的访问入口。 加载阶段完成之后二进制字节流就按照虚拟机所需的格式存储在方区去中。 关注点2: verifaction 这一阶段的目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求 文件格式验证:验证字节流是否符合Class文件格式的规范,并且能被当前版本的虚拟机处理 元数据验证:对字节码描述的信息进行语义分析