1.java虚拟机及程序的生命周期
java虚拟机的生命周期:java虚拟机进程从启动到终止的过程.
在以下情况下java虚拟机将结束生命周期
01.程序正常执行结束;
02.程序在执行中因为出现异常或错误而异常终止;
03.执行类System.exit()方法.
04.由于操作系统出现错误而导致java虚拟机进程终止.
java程序的生命周期:
java程序从运行到终止到过程称为程序的生命周期,它和java虚拟机的生命周期是一致的.
2.类的加载,连接和初始化
当java程序需要使用某个类时,java虚拟机会确保这个类已经被加载,连接,初始化,其中连接包括:加载,连接,初始化 过程如下图:
这些步骤必须严格的按照这个顺序执行:
(1).加载:查找并加载类的二进制数据.
(2).连接:包括验证.准备和解析类的二进制数据.
01.验证:确保被加载类的正确性;
02.准备:为类的静态变量分配内存.并将其初始化为默认值;
03.解析:把类中的符号引用转换为直接引用.
(3).初始化.给类的静态变量赋予正确的初始值.
2.1.类的加载
类的加载:
1把.class文件中的二进制数据读取到内存中
2把它放在运行时数据区的方法区
3.在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构(类的加载的最终产品便是运行时数据区的堆区的Class对象)
类的加载的最终产品是位于运行时数据区的堆区的Class对象,Class对象封装了类在方法区内的数据结构,并且向java程序提供类访问类在方法区内的数据的接口
类的加载器:
主要任务是完成类的加载
类的加载器分为两种:
01,java虚拟机自带的加载器,包括启动类加载器.扩展类加载器和系统类加载器.
02,用户自定义的类加载器,是java.lang.ClassLoader类的子类的实例,用户可以通过它来定制类的加载方式
java虚拟机允许类加载器在预料某个类将要被使用的时候预先加载它(即预加载机制),而不需要再等到需要"首次主动使用"时再加载它,预先加载时,如果遇到.class文件缺失或者存在问题,类加载器,必须等到程序首次主动使用该类时才会报错,如果这个类一直不使用,那么类加载器不会报告错误.
后续...........
来源:https://www.cnblogs.com/zqr99/p/7504939.html