
类加载过程
main函数启动时, 先通过类加载器加载到JVM
loadClass 类加载过程有如下几步:
- 加载: 读取字节码文件 (使用时才会加载, main() new..等等)
- 验证: 校验
- 准备: 给类静态变量分配内存, 先赋予默认值
- 解析: 将
符号引用
转变为直接引用, main()方法替换为内存的指针或句柄, 这就是静态连接
的过程,(动态连接
是在运行的时候完成的)
- 初始化: 静态变量赋值, 执行静态代码快
- 使用
- 卸载
动态加载, 主类在使用的时候, 才会加载这些类
类加载器和双亲委派
- 引导类加载器: 加载JRE的lib目录下的核心类库
- 扩展类加载器: 加载JRE的lib目录下的ext扩展目录中的JAR包
- 应用程序加载器: 加载ClassPATH路径下的类包
- 自定义加载器: