美文网首页
JVM Class 字节码学习笔记

JVM Class 字节码学习笔记

作者: 没有颜色的菜 | 来源:发表于2018-08-15 14:47 被阅读0次

目标 直接阅读字节码

魔数

  • 开头前4个字节为 CAFE BABE,(两个十六进制字符为一个字节),后四个字节为Class 文件的版本号,先次版本号,后主版本号,能向下兼容,不能向后兼容,
  • 之后的两个字节为常量池常量的个数,从1开始计数,在之后就是每一个常量的信息,最多64
    k个
  • 常见的有 14 个
    • Class:tag(u1)+ name_index(u2)
    • Utf8:tag(u1)+ length(u2)+ bytes(length)方法名,字段名,加上包名不能超过64k
    • 基础数据类型,tag(u1)+ bytes(?)值
  • 访问标志,两个字节,为标志位,用于表示类的信息,比如是否是public,final,super,interface,abstract,enum,annotation
  • 类索引,父类索引,接口索引
  • 字段表,访问标志,public protected private 三选一,final volatile 不能同时选择,接口中public static final 是必须的。access_flags, name_index(简单名称),descriptor_index(全限定名),attributes_count,attributes
  • 方法表集合access_flags (strictfp,native,synchronized
  • 属性表集合
    • InnerClass
    • LineNumberTable 源码与字节码对应
    • LocalVariableTable
    • StackMapTable
    • Signature
    • SourceFile
    • Synthetic
      每个属性都引用常量池里来表示
      Code 属性,方法体的信息存储在这,code_length 长度固定

相关文章

  • 2019-02-25深入理解Java中的反射

    ClassLoader的学习笔记 ClassLoader的具体作用就是将class字节码文件加载到jvm虚拟机中去...

  • 03 java字节码文件

    java源码经过编译,生成class字节码文件,JVM加载class文件执行。字节码文件将java语言与JVM解耦...

  • JVM Class 字节码学习笔记

    目标 直接阅读字节码 魔数 开头前4个字节为 CAFE BABE,(两个十六进制字符为一个字节),后四个字节为Cl...

  • JVM

    JVM 基础-类字节码详解 多语言编译为字节码在 JVM 运行 Java 字节码文件-- Class文件的结构属性...

  • Android动态加载技术基础之JVM,DVM,ART的区别

    JVM和DVM的区别 DVM和 JVM 执行的字节码文件的区别JVM执行的字节码文件是.class文件,而DVM上...

  • Tomcat 类加载机制

    Java类(.java)—> 字节码⽂件(.class) —> 字节码⽂件需要被加载到jvm内存当中(这个过程就是...

  • java运行原理分析、线程运行机制

    有道云笔记地址 一. JVM运行时数据分区 java文件编译为class字节码文件后,交给jvm继续执行 1. 一...

  • 01__JVM(1)

    什么是JVM:(jvm有跨平台性) java代码-->(翻译)class(字节码文件)-->机器上运行 JVM 代...

  • JVM

    1.什么是JVM? Java文件à字节码(.class file)à虚拟机加载.class文件,翻译成0101码à...

  • 2020-12-19 JVM-编译和类加载机制

    引言:今天谈谈源码文件如何编译Class字节码文件以及字节码文件如何加载到JVM中。 源码转换为字节码文件 1.源...

网友评论

      本文标题:JVM Class 字节码学习笔记

      本文链接:https://www.haomeiwen.com/subject/fdhebftx.html