概述
虚拟机的类加载机制:虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型。
与那些在编译时需要进行连接工作的语言不同,在 Java 语言里面,类型的加载、连接和初始化过程都是在程序运行期间完成的,
- 缺点:这种策略会令类加载时稍微增加一些性能开销
- 优点:为 Java 应用程序提供高度的灵活性,Java 里天生可以动态扩展的语言特性就是依赖运行期动态加载和动态连接这个特点实现的。
- 例如,如果编写一个面向接口的应用程序,可以等到运行时再指定其实际的实现类;
约定:
- 第一,在实际情况中,后文中直接对「类」的描述都包括了类和接口的可能性,而对于类和接口需要分开描述的场景会特别指明;
- 第二,「Class 文件」并非特指某个存在于具体磁盘中的文件,这里所说的「Class 文件」应当是一串二进制的字节流,无论以何种形式存在都可以。
