1、Loading
这一步很简单,就是将硬盘上的某一个二进制的class文件加载到内存中。
2、Linking
2.1 Verification
校验,比如class文件的格式是否正确、内容是否安全
2.2 Prepatation
给class文件的静态变量赋默认值
2.3 Resolution
常量池里的符号引用转换成内存地址
3、Initializing
调用静态代码块,静态变量赋初始化值
类加载器的层次,如下图:
这里解释一下,所谓双亲委派机制,就是比如要加载一个A.class,进来之后会从下到上先找一遍,如果都找不到,然后从上到下再加载,跑一大圈如果依然没有找到,就抛出了FileNotFoundException ;举个例子吧:比如村里有个矛盾,刚开始找村委会解决、解决不了找乡政府、还是解决不了找县委、省委纪检委,都没解决,于是又开始自上而下调解,倒着调解了一圈,还没有解决,那只能FileNotFoundException 您这个问题太尖锐,真解决不了,哈哈