1—你了解类加载机制吗?
-
装载
class文件 ---- > 字节流 ---->将字节流文件写入内存——— >加载到方法区运行时的数据结构 ---- >在堆区创建一个java.lang.class对象。
-
链接 (1验证–2准备–3解析)
验证(贯穿整个流程 检验文件不能有问题)
准备(为类的静态变量分配内存,并初始化为当前默认值)
解析(从运行时常量池中的符号引用动态确定具体值的过程)
-
初始化
就是真正运行java代码的过程,这是在为准备阶段的变量赋值。
2.什么是类加载器,常见的类加载器有哪些?
- 类加载器是指:通过一个类的全限定性类名获取该类的二进制字节流叫做类加载器;
- 类加载器分为以下四种:
启动类加载器(BootStrapClassLoader):用来加载java核心类库,无法被java程序直接引用;
扩展类加载器(Extension ClassLoader):用来加载java的扩展库,java的虚拟机实现会提供一个扩展库目录,该类加载器在扩展库目录里面查找并加载java类;
系统类加载器(AppClassLoader):它根据java的类路径来加载类,一般来说,java应用的类都是通过它来加载的;
自定义类加载器:由java语言实现,继承自ClassLoader;