类的生命周期

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