• JVM理论:(三)类加载机制


    一、类文件结构

      1、class类文件结构

        1)魔数与Class文件的版本

        2)常量池

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

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

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

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

        7)属性表

      2、字节码指令有哪些

      3、栈帧

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

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

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

      4、方法调用

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

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

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

    二、类加载

      1、类加载过程

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

      2、类加载器

        双亲委派模型

     

  • 相关阅读:
    (轻松一刻)神秘而又强大的蓝翔学院!而且还是当中最可怕的挖掘机系!
    IIS 反向代理二级目录及泛目录
    正则表达式匹配外链和内链
    关于 preg_replace_callbank 的学习记录
    Linux 笔记
    Linux 笔记
    Linux 笔记
    使用 Docker 安装 showdoc
    Docker 入门
    Linux 笔记
  • 原文地址:https://www.cnblogs.com/zjxiang/p/9218136.html
Copyright © 2020-2023  润新知