本文共 1159 字,大约阅读时间需要 3 分钟。
类加载器是Java虚拟机中的一个重要组成部分,负责从文件系统或网络系统中加载class文件。class文件在开头有特殊的标记(魔术开头CA FE BA BE),这些信息在文件格式验证阶段会被验证。
负责从文件系统或网络系统中加载class文件:
类加载器通过全限定类名获取对应的class文件二进制流,并将其转化为方法区的运行时数据。存储类信息:
方法区不仅存储类信息,还包括运行时常量池、字符串字面量和数字常量。这些常量信息来源于class文件的常量池部分。类加载过程分为四个阶段:加载、链接、验证和初始化。
加载:
链接:
准备:
为类变量分配内存,基本类型变量初始化为默认值,引用类型为null。final修饰的static变量在编译时就初始化,默认阶段不会显式初始化。初始化:
执行类构造器(引导类加载器(Bootstrap ClassLoader):
扩展加载器(ExtClassLoader):
应用加载器(System ClassLoader):
自定义类加载器(User-Defined ClassLoader):
Java虚拟机采用双亲委派机制管理类加载,避免重复加载且保护安全。请求交由父类处理,确保类的唯一性。
沙箱机制通过双亲委派限制核心类API的访问,防止恶意代码攻击。
转载地址:http://qvakz.baihongyu.com/