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

下一节将详细介绍字节码的指令。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值