Java类如何加载以及实现方式


Java类如何加载以及实现方式

概念:虚拟机把描述类的数据文件(字节码)加载到内存,并对数据进行验证、准备、解析以及类初始化,最终形成可以被虚拟机直接使用的Java类型(java.class.Class对象)
类的生命周期:
加载过程:通过一个类的全限定名来获取定义此类的二进制字节流,将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。在内存中(方法区)生成一个代表这个类的Java.lang.Class对象,作为方法区这个类的各种数据的访问入口;
验证过程:为了确保Class文件的字节流中包含的信息流符合当前虚拟机的要求,文件格式验证、元数据验证、字节码验证、符号引用验证;
准备阶段:是为类的静态变量分配内存并将其初始化为默认值,这些内存都将在方法区中进行分配。准备阶段不分配类中的实例变量的内存,实例变量将会在对象实例化时随着对象一起分配在Java堆中。
解析阶段:虚拟机将常量池内的符号引用替换为直接引用的过程;
初始化阶段:类初始化阶段是类加载过程的最后一步。初始化阶段就是执行类构造器方法的过程
类加载有三种方式:


1、命令行启动应用时由JVM初始化加载
2、通过Class.forName()方法动态加载
3、通过ClassLoader.loadClass()方法动态加载


分享到:


相關文章: