zoukankan      html  css  js  c++  java
  • JVM理论:(三)类加载机制

    一、类文件结构

      1、class类文件结构

        1)魔数与Class文件的版本

        2)常量池

        3)类或接口层次的访问标志

        4)类索引、父类索引、接口索引集合,通过这三项数据来确定这个类的继承关系

        5)字段表,包括类级变量、实例级变量,是不包括方法内部声明的局部变量的,不会列出从父类或父接口中继承的字段

        6)方法表,方法体的代码经过Javac编译器处理后,最终变为字节码指令存储在Code属性内

        7)属性表

      2、字节码指令有哪些

      3、栈帧

        每一个方法从调用开始到执行完成,都对应着一个栈帧在虚拟机栈里面从入栈到出栈的过程。

        每一个栈帧都包括了局部变量表,操作数栈,动态连接,方法返回地址。

        Java编译器输出的指令流,是一种基于操作数栈的指令集架构。

      4、方法调用

        JAVA虚拟机里面提供了5条方法调用的字节码指令。

        解析:在编译器进行编译时就有一个可确定的调用版本,在类加载的解析阶段就会将符号引用转化为直接引用。

        分派:依赖变量的静态类型来定位方法执行版本的分派动作称为静态分派,在运行期根据实际类型确定方法执行版本的分派过程称为动态分派。

    二、类加载

      1、类加载过程

        加载、验证、准备、解析、初始化

      2、类加载器

        双亲委派模型

     

  • 相关阅读:
    bootStrap-treeview插件
    UML常用图的几种关系的总结
    RFC中文文档
    继承:重新使用接口
    Java8向后兼容
    Java8 时间调节器
    Java8 ChronoUnits枚举
    BigDecimal.divide方法
    java.lang.Double.byteValue() 方法
    事件处理是什么?
  • 原文地址:https://www.cnblogs.com/zjxiang/p/9218136.html
Copyright © 2011-2022 走看看