GCROOT 有哪些?
1 、 虚拟机栈(栈帧中的本地变量表)中引用的对象。
2、 本地方法栈中JNI(即一般说的native方法)引用的对象。
3、 方法区中的静态变量和常量引用的对象。
4、活跃线程的引用对象
JVM 判断对象是否回收?
GC roots。也就是从根对象出发,没有任何一个对象引用到它,那么就判断这个对象是不可达的。
mysql5.7是driver = "com.mysql.jdbc.Driver";
mysql8是driver = "com.mysql.cj.jdbc.Driver";
自动JDK6之后,JDBC已经升级到4.0了。
JDBC4的一个特性是:
不需要显式的调用Class.forName了,在jdbc4中,调用getConnection的时候DriverManager会自动去加载合适的驱动。
Class.forName(driver)的根本目的就是为了调用DriverManager.registerDriver。
Class.forName还有个重载的方法:Class.forName(String name, boolean initialize, ClassLoader loader),Class.forName(String className)就等价于Class.forName(className, true, currentLoader),注意中间的参数为true,这个参数的含义就是要不要初始化。如果此参数为true且指定的类以前没有被初始化过,就会去初始化。