1.前言
JVM类加载机制分为五个部分:加载,验证,准备,解析,初始化。下图是一个类在JVM中的完整生命周期,我们先重点关注类加载的五个部分。
通过Java连接mysql的时候,经常可以看到代码Class.forName("com.mysql.jdbc.Driver"), 那这句代码起到什么作用呢?我们带着这个疑问,继续往下看。
2.Class.ForName
Class.ForName返回与给定的字符串名称相关联类或接口的Class对象,也就是进行类加载。我们直接上源码:
通过源码可以看出两个细节点:
- 加载出来的类会被初始化。
- 类加载器使用的是调用forName方法的调用者的类加载器。
3.ClassLoader.loadClass
通过指定类加载器对类进行加载,但不会对类进行连接和初始化。上源码: