Java_JVM_字节码,java_jvm字节码
Java_JVM_字节码,java_jvm字节码
1 java的运行机制
下面是JVM结构图,主要包含:类加载器、垃圾回收器、执行引擎、运行时数据区等。该系列的文章将一一介绍这么部分。
java虚拟机使用Java类的方式如下:java源程序(.java文件)在经过Java编译器编译之后就被转换成java字节码(.class文件),类加载器就是负责读取Java字节码,并转换成java.lang.class类的一个实例。下面介绍一下java字节码。
在本机上安装JDK之后,运行javac ***.java, 即可将java文件编译成Java字节码。
可以利用反汇编工具:Java ByteCode Editor查看和编辑java字节码。
3 字节码
class文件结构:
(1) 文件描述:存储magic位,class文件版本号。Magic位表示该文件是,class类型的文件,值为:0xCAFEBABE
(2) 常量池:存储常量,常量在池中的位置称为索引,常量最重要是被指令通过索引引用。常量的类型有:Int、Long、Float、Double、String、Class(类常量)、FieldRef(字段引用常量)、MehtodRef(方法引用常量)。
(3)类概述:存储了当前类的总体信息,包括当前类名、所继承父类、所实现的接口。
(4)字段表:存储了一组字段结构,类中每个字段对应一个字段结构(字段名、字段修饰符、字段类型)。
(5)方法表:存储方法结构。方法结构中最重要的是Code结构,包含方法的实现。
(6)扩展信息表:类级别的可选信息,类级别的annotation。
源码被编译成:指令+常量
字节码是JVM的指令集,包含操作数+参数
4 asm
ASM是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class 被存储在严格格式定义的 .class文件里,这些类文件拥有足够的元数据来解析类中的所有元素:类名称、方法、属性以及 Java 字节码(指令)。ASM从类文件中读入信息后,能够改变类行为,分析类信息,甚至能够根据用户要求生成新类。
使用ASM框架需要导入asm的jar包,下载链接:asm-3.2.jar。
下一节将详细介绍字节码的指令。相关文章
- 暂无相关文章
用户点评