JVM是如何加载类的?
Java虚拟机加载类的全过程包括,加载,验证,准备,解析和初始化。 image.png 在加载阶段,虚拟机需要完成以下三件事: 通过类的全限名获取此类的二进制字节流。 将这个字节流所代表的静态存储结构转换为方法区的运行时数据区 在内存中生成一个代表这个类的Class对象,作为方法区的这个类的各种数据访问入口。 可以看出,Java能通过加载外部的字节码来实现动态的装载类,这为Java提供了很大的灵活性。实现类加载动作的代码叫做类加载器。 比较两个类是否相等,只有在两个类是由同一个类加载器加载的前提下才有意义,否则尽管两个类是同一个Class文件,只要类加载器不同,那么这两个类必定不相等。 双亲委派机制 绝大部分Java程序都会用到以下三种系统提供的类加载器: BootStrap ClassLoader,负责加载<JAVA_HOME>/lib或被-Xbootclasspath指定路径下的类库,开发者不可以直接使用 Extension ClassLoader,负责加载<JAVA_HOME>/lib/ext或被java.ext.dirs系统变量指定的路径中的所有类库,开...