第七章虚拟机类加载机制

类加载过程---验证

目的:
为了保证class文件中字节流包含的信息符合java虚拟机的要求。

四个阶段验证:
1 文件格式验证
目的:确保class文件格式的规范。
确保输入的字节流正确解析,并存储于方法区之内。所以此阶段是基于二进制字节流进行的。而后面的三个验证阶段,全部是基于方法区的存储结构进行的。

比如:验证魔数,主次版本,常量类型等

2 元数据验证
目的:对字节码描述的信息进行语义分析,确保其描述的信息符合java语法规范。

比如:检查接口和父类,继承与抽象方法等

3 字节码验证
目的:对类的方法体进行校验分析,主要通过数据流和控制流分析,确定程序语义是合理,符合逻辑的。

比如:跳转指令,方法体中的类型转换是有效的等

4 符号引用验证
目的:它发生在虚拟机将符号引用转化为直接引用的时候。其目的是确保解析动作能正常执行。
符号应用可以看作是对类自身以外的信息进行匹配性校验。

备注:
验证阶段是非必要的,可以使用-Xverify:none参数来关闭大部分的类校验措施,以缩短虚拟机类加载的时间。


Boy-20180721

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容