1.JVM初始化步骤
①,如果类还没有加载连接,则虚拟机先加载并连接
②,父类还没有被初始化,则先初始化父类
③,如果类包含初始化语句,则系统依次执行这些初始化语句
2.类初始化时机
①,使用new创建类的实例
②,访问类或接口的静态变量,或者对静态变量进行赋值
③,调用类的静态方法
④,反射
⑤,初始化子类
⑥,虚拟机启动时的启动类
3.JVM结束生命周期的方式
①,System.exit()
②,程序正常执行结束
③,程序发生异常或者错误
④,操作系统异常导致的虚拟机终止运行
4.类加载的三种方式
①,虚拟机初始化加载
②,使用Class.forName()方法动态加载
③,使用ClassLoader.loadClass()方法动态加载
5.Class.forName和ClassLoader.loadClass区别
①,Class.forName在将类加载到虚拟机后,会执行static代码块
②,ClassLoader.loadClass在将类加载到虚拟机后,不是执行static代码块; 只要newInstance后才会执行static代码块
6.获取类加载器的方式
①,通过线程获取
如:ClassLoader loader = Thread.currentThread().getContextClassLoader();
②,通过某个类获取
如:ClassLoader loader = HelloWorld.
class
.getClassLoader();
7.自定义类加载器
①,继承ClassLoader
②,重写findClass方法
实例参考: http://www.importnew.com/23792.html
时间: 2024-12-25 13:58:17