一、Class的生命周期
一个Class文件经过三个步骤才能加载到内存中:
- Loading(加载):class文件内是一个个二进制字节,将这些内容装到内存中。双亲委派机制。
- Linking(连接):该过程又分为3小步
- verification(验证):校验class文件是否符合标准,比如文件开头不是CAFEBABE,这一步就会失败。
- preparation(准备):把class文件静态变量赋默认值(不是初始值)。如static int i = 8,在这个步骤会先把 i 赋成0而不是8。
- resolution(识别):是把class文件常量池里面用到的符号引用,转换为直接内存地址,直接可以访问到的内容。
- Initlalizing(初始化):静态变量被赋初始值,静态代码块被执行。
二、 什么是双亲委派机制
虚拟机在加载类的过程中需要使用类加载器加载,在Java中类加载器有很多,类加载采用的是双亲委派机制。
Java中有四种类加载器,并且这四种加载器存在一种层次关系