描述JVM如何加载Class字节码文件。
保证字节流的信息符合JVM规范。(JVM的自我保护机制)
正常运行Java程序可以通过.java编译成class文件,然后交由JVM执行。编译器虽然本身可以检测Java的安全问题。但是除了编译产生字节码文件之外,还可以通过其他途径产生,比如直接编写字节码文件或者通过第三方无编译检查的编译器生成。
JVM验证包括四个方面:
为类变量分配内存。
类变量:static修饰的静态变量
将常量池中的符号引用替换成直接引用。发生时间不可预料,有可能和初始化阶段互相交换位置。
双亲委派模型的本质目的是为了避免类的重复加载,用代码类比的话,是为了实现代码复用。
【举个例子】每个类都有一个共同的父类Object,每个类在被加载时都会先去加载Object类,按照双亲委派模型的思路,所有的类都会优先被启动类加载器加载,那么也就是说只需要加载一次Object,当其他类需要Object时,直接返回已经加载过的Object.class。