1.java virtual machine 与程序的生命周期
1.执行了system.exit()的方法
2.program正常执行结束
3.program 运行过程中遇到了error 和exception
4.由于操作系统错误导致的Java virtual machine 退出
2.关于类的加载,连接与初始化
1,加载:查找并加载类的二进制数据(硬盘到内存)。--》将其放在运行时数据区的方法区内,并在堆内存创建一个创建一个java.lang.class对象。用来封装类在方法区的数据结构,提供了访问方法区内的数据结构的接口即反射;
2,连接:
(1)验证:确保被加载的类的正确性。
(2)准备:为类的静态变量分配内存,并将其初始化为默认值。----》初始化默认值是 0 null 之类的,并没有赋予我们所赋予的值
(3)解析:将类中的符号引用转换为直接引用
3.初始化:为类的静态变量赋于正确的初始值。(这里的赋予正确初始值是用户所赋予的值)
3.java program 对类的主动使用方式,会导致类的初始化,其他方式都不会进行类的初始化。
1.创建类的实例---》 xx x=new xx();
2.访问某个类或者接口的静态变量,或者对静态变量赋值
3.调用类的静态方法
4,反射调用--》 class。forname();
5.初始化一个类的子类
6.java virtual machine start 标明为启动类的类