校招刷题群
高效刷题 迎战校招
校招精选试题
近年面笔经面经群内分享
Java刷题群 前端刷题群 产品运营群
首页 > java语言 > 类的加载过程
题目

验证阶段有什么用?

解答

因为class文件可能会被中途改动,或者来自有恶意的编译器,因此需要进行验证,避免非法的class文件危害虚拟机自身的安全。
具体包括以下四个阶段:
文件格式验证,包括版本号是否匹配,常量池中的常量类型,指向常量的索引值是否指向了不存在的常量或不符合类型的常量。
元数据验证,进行语义分析,包括是否有父类,是否可以继承(final不允许继承),子类是否实现了所有的抽象方法等
字节码验证,最复杂的阶段,通过数据流和控制流的分析,对类的方法体进行校验分析,包括操作数栈使用时类型是否匹配,类型转换是否正确等等。
符号引用验证,发生在虚拟机将符号引用转化为直接引用的时候(在解析时发生),包括符号引用是否有对应类、方法和字段,是否可以被当前类访问等。

C 0条回复 评论

帖子还没人回复快来抢沙发