网站建设销售开场白,用divid做网站代码,wordpress手动安装主题,有几个网站JVM 类加载的过程 加载验证准备解析初始化 加载
“加载”#xff08;Loading#xff09;阶段是整个“类加载”#xff08;Class Loading#xff09;过程中的一个阶段#xff0c;它和类加载 Class Loading 是不同的#xff0c;一个是加载 Loading 另一个是类加载 Class L… JVM 类加载的过程 加载验证准备解析初始化 加载
“加载”Loading阶段是整个“类加载”Class Loading过程中的一个阶段它和类加载 Class Loading 是不同的一个是加载 Loading 另一个是类加载 Class Loading所以不要把二者搞混了。 在加载 Loading 阶段Java虚拟机需要完成以下三件事情 1通过一个类的全限定名来获取定义此类的二进制字节流。 2将这个字节流所代表的静态存储结构转化为方法区的运行时数据结构。 3在内存中生成一个代表这个类的java.lang.Class对象作为方法区这个类的各种数据的访问入口 总的来说就是:找到.class文件,打开文件,读取文件内容,并且尝试解析格式
验证
验证是连接阶段的第一步这一阶段的目的是确保Class文件的字节 流中包含的信息符合《Java虚拟机规范》的全部约束要求保证这些信 息被当作代码运行后不会危害虚拟机自身的安全。
验证选项 文件格式验证 字节码验证 符号引用验证…
准备
我们类加载的最终的目标,是构造出一个完整的类对象,而类对象需要分配一定的内存,并且对内存进行初始化 准备阶段是正式为类对象中定义的变量即静态变量被static修饰的变量分配内存并设置类变量初始值的阶段。 比如此时有这样一行代码 public static int value 123; 它是初始化 value 的 int 值为 0而非 123
解析
解析阶段是 Java 虚拟机将常量池内的符号引用替换为直接引用的过程相当于将文件中的偏移量转换为内存中的真实地址,也就是初始化常量的过程,这里的常量主要是一些字符串常量
初始化
对类对象进行更加具体的初始化操作,初始化静态成员,执行代码块,加载父类 初始化阶段Java 虚拟机真正开始执行类中编写的 Java 程序代码将主导权移交给应用程序。初始化阶段就是执行类构造器方法的过程。 上述代码 public static int value 123; 就是在这里给value赋值为123