《深入理解JAVA虚拟机》读书笔记09

第七章   虚拟机类加载机制
虚拟机的类加载机制是指类的数据从Class存储到内存,并对数据进行校验、转换解析和初始化、最终形成直接被被使用的Java类型。
一、类加载的时机
类从加载到内存开始,到卸载出内存,其中包括了:加载、验证、准备、解析、初始化、使用和卸载七个阶段。其中验证、准备和解析称为链接。
发生顺序如下图:

其中加载、验证、准备和初始化的顺序是确定的,解析阶段则不一定。
二、类加载过程
1、加载,加载阶段主要完成三件事情
1):通过一个类的权限定名来获取此类的二进制流
2):将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构
3):在java堆中生成一个代表这个对象的class对象,作为访问该类的入口。
2、验证,是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,切不会危害虚拟机的安全。
主要有几下几方面的验证:
1):文件格式的验证
2):元数据验证
3):字节码验证
3、准备,正式为类变量分配内存并设置类变量初始化的阶段,这些内存都将是在方法区中进行分配。需要注意的是这时候分配的内存仅包括类变量
而不包括实例变量。
4、解析,将常量池内的符号应用替换为直接引用的过程。其中包括:
1):类或接口的解析
2):字段解析
3):类方法解析
4):接口方法解析
5、初始化,在该阶段才开始真正的执行java代码
三、类加载器
1、主要的类加载器
1):启动类加载器:加载《JAVA_HOME》\lib下的类
2):扩展类加载器,加载《JAVA_HOME》\lib\ext下的文件
3):应用程序类加载器,加载用户路径classpath下的
4):用户自定义的加载器,一般的关系图如下所示:
2、双亲委派模型
上图所示的就是双亲委派模型,这种模型的工作过程是:如果一个类加载器收到了一个请求,它不会自己去加载这个类,而是把这个类交给它的父类来实现,
只有当父类加载器反馈无法完成这个请求时,子类才会自己去加载。
使用双亲委派模型的好处是:保证java有秩序的被加载,而不会发生混乱。
四、小结
上 述文章简单的介绍了类加载过程,加载,验证,准备,解析,初始化,以及类加载器的双亲委派模型,详情请查看《深入理解JAVA虚拟机》。




#笔记##读书笔记#
全部评论

相关推荐

肥沃富饶:可能初创公司,老板不懂技术
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务