【JVM】JVM系列之Class文件(三)(2)

简介:  随着我们学习的不断深入,我相信读者对class文件很感兴趣,class文件是用户编写程序与虚拟机之前的桥梁,程序通过编译形成class文件,class文件之后会载入虚拟机,被虚拟机执行,下面我么来一起揭开class文件的神秘面纱。

六、特殊字符串


  常量池容纳的符号引用包括三种特殊的字符串:全限定名、简单名称、描述符。全限定名为类或接口的全限定名,如java.lang.Object对象的全限定名为java/lang/Object,用/代替.即可。简单名称为字段名或方法名的简单名称,如Object对象的toString()方法的简单名称为toString,描述符我们在之前已经介绍过了。


七、指令介绍


  7.1 方法调用指令:


  1. invokevirtual,用于调用对象的实例方法,根据对象的实际类型进行分派。


  2. invokeinterface,用于调用接口方法,在运行时搜索一个实现了该接口方法的对

象,找出合适的方法进行调用。


  3. invokespecial,用于调用需要特殊处理的实例方法,包括实例初始化方法、私有方法、父类方法。


  4. invokestatic,用于调用类方法,static方法。


  5. invokedynamic,用于在运行时动态解析出调用点限定符所引用的方法,并执行该方法。


  7.2 返回指令


  ireturn(boolean、byte、char、short、int)、lreturn、freturn、dreturn、areturn(返回为对象引用类型)、return(返回为void)


  7.3 同步指令


  虚拟机支持方法级的同步和方法内部一段指令序列的同步,都使用管程(Monitor)来支持。方法级(synchronized修饰)同步时隐式的,无需通过字节码指令来控制,方法调用时检查ACC_SYNCHRONIZED标志。方法内部的synchronized语句块使用

monitorenter,monitorexit指令来确保同步。


七、总结


  class文件看似很复杂,其实经过分析我们发现class文件并不难,通过分析class文件,我们知道了源程序经过编译器编译之后如何组织在class文件中,进而为虚拟机执行程序提供搭起了桥梁。也相信经过分析,读者也能够分析class文件了,那么我们的目的也就达到了,谢谢各位园友的观看~

目录
相关文章
|
安全 Java
对 JVM 的类加载机制以及寻找字节码文件的“双亲委派模型”的理解
对 JVM 的类加载机制以及寻找字节码文件的“双亲委派模型”的理解
130 0
|
7月前
|
Arthas 存储 算法
深入理解JVM,包含字节码文件,内存结构,垃圾回收,类的声明周期,类加载器
JVM全称是Java Virtual Machine-Java虚拟机JVM作用:本质上是一个运行在计算机上的程序,职责是运行Java字节码文件,编译为机器码交由计算机运行类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析类加载器的定义:JVM提供类加载器给Java程序去获取类和接口字节码数据类加载器的作用:类加载器接受字节码文件。
691 55
|
5月前
|
存储 Java 编译器
深入理解Java虚拟机--类文件结构
本内容介绍了Java虚拟机与Class文件的关系及其内部结构。Class文件是一种与语言无关的二进制格式,包含JVM指令集、符号表等信息。无论使用何种语言,只要能生成符合规范的Class文件,即可在JVM上运行。文章详细解析了Class文件的组成,包括魔数、版本号、常量池、访问标志、类索引、字段表、方法表和属性表等,并说明其在Java编译与运行过程中的作用。
146 0
|
8月前
|
Arthas 监控 Java
Arthas redefine(加载外部的.class文件,redefine到JVM里 )
Arthas redefine(加载外部的.class文件,redefine到JVM里 )
333 15
|
7月前
|
Arthas 存储 Java
JVM深入原理(三+四):JVM组成和JVM字节码文件
目录3. JVM组成3.1. 组成-运行时数据区3.2. 组成-类加载器3.3. 组成-执行引擎3.4. 组成-本地接口4. JVM字节码文件4.1. 字节码文件-组成4.1.1. 组成-基础信息4.1.1.1. 基础信息-魔数4.1.1.2. 基础信息-主副版本号4.1.2. 组成-常量池4.1.3. 组成-方法4.1.3.1. 方法-工作流程4.1.4. 组成-字段4.1.5. 组成-属性4.2. 字节码文件-查看工具4.2.1. javap4.2.2. jclasslib4.2.3. 阿里Arthas
134 0
|
7月前
|
存储 安全 Java
JVM深入原理(五):JVM组成和JVM字节码文件
类的生命周期概述:类的生命周期描述了一个类加载,使用,卸载的整个过类的生命周期阶段:类的声明周期主要分为五个阶段:加载->连接->初始化->使用->卸载,其中连接中分为三个小阶段验证->准备->解析。
113 0
|
SQL 缓存 Java
JVM知识体系学习三:class文件初始化过程、硬件层数据一致性(硬件层)、缓存行、指令乱序执行问题、如何保证不乱序(volatile等)
这篇文章详细介绍了JVM中类文件的初始化过程、硬件层面的数据一致性问题、缓存行和伪共享、指令乱序执行问题,以及如何通过`volatile`关键字和`synchronized`关键字来保证数据的有序性和可见性。
188 3
|
小程序 Oracle Java
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
这篇文章是关于JVM基础知识的介绍,包括JVM的跨平台和跨语言特性、Class文件格式的详细解析,以及如何使用javap和jclasslib工具来分析Class文件。
273 0
JVM知识体系学习一:JVM了解基础、java编译后class文件的类结构详解,class分析工具 javap 和 jclasslib 的使用
|
Java
jmap 查看jvm内存大小并进行dump文件内存分析
jmap 查看jvm内存大小并进行dump文件内存分析
507 3
|
Java 索引
【JVM】字节码文件的组成部分
【JVM】字节码文件的组成部分
151 1