第六章 java class 文件
6.1 java class文件是什么
javaclass文件是对java程序二进制文件格式的精确定义,每一个java class文件都对一个java类或者java接口做出了全面描述。
6.1 class文件的内容
(1)magic number
java class文件的前四个字节是魔数:0XCAFEBABE,用于分辨java class文件和非class文件
(2)minor_version 和 major_version
次版本号 和 主版本号,一共占用四个字节。
(3)constant_pool_count 和 constant_pool
常量池数量和常量池。
常量池:常量池中包含了文字字符串,final变量值,类名和方法名的常量。常量池是由一个数组组成。
每个常量池入口都从长度为一个字节的标志开始,这个标志指出了列表中该位置的常量类型。
更具体的常量池分析请参考:http://foxxiao.iteye.com/admin/blogs/849932
(4)access_flags
展示了文件中定义的类或接口的几段信息。
(5)this_class
this_class占用2个字节,它是一个对常量池的索引。
当java虚拟机在this_class位置查阅常量池入口的时候,它会发现一个通过把自己的标签设为constant_class来识别自身的项。
(6)super_class
紧接this_class项,两字节的常量池索引,在super_class位置的常量池入口是一个指向该类超类限定名的CONSTANT_CLASS_INFO入口。对于object类,super_class为0。
(7)interfaces_count和interfaces
紧接super_class, 含义:在文件中由该类直接实现或者由接口所扩展的父接口的数量。
是个数组,包含了对每个该类或者接口直接实现的父接口的常量池索引。每个父接口使用一个CONSTANT_CLASS_INFO入口来描述。这个数组织容纳那些直接出现在类声明的implements子句或者接口声明的extends子句中的父接口。超类按照在implements子句和extentds字句中出现的顺序(从左到又)在这个数组中显现。
紧接在interfaces后面的是对该类或者接口中所声明的字段的描述。每个field_info表都展示了一个字段信息。此表包含了字段的名字、描述符和修饰符。这样的信息有些放在field_info表中,有些放在field_info表所指向的常量池中。
描述类接口中声明的方法.
method_count:双字节长度,对于该类或者接口中声明的所有方法的总计数(不包括父超类或者父接口中继承来的方法)。
method_info表包含了与方法相关的一些信息,包括方法名和描述符(方法的返回值类型和参数类型)。具体参看书P126.
- attributes_count和attributes
它给出了该文件中类或者接口所定义的属性的基本信息。
6.3 特殊字符串
常量池中容纳的符好引用包括三种特殊的字符串:全限定名、简单名称和描述符。
- 全限定名:当常量池入口指向类或者接口时,它们给出该类或者接口的全限定名。在class文件中,全限定名用斜线取代了。
- 简单名称:字段名和方法名以简单名称形式出现在常量池入口中。
- 描述符:指向字段的符好引用还包含描述符字符串。字段的描述符给出了字段的类型;方法描述符给出了方法的返回值和方法参数的数量、类型以及顺序。
6.4 常量池
常量池是一个可变长度cp_info表的有序序列。
- 大小: 35.7 KB
- 大小: 45.3 KB
- 大小: 29.1 KB
分享到:
相关推荐
深入理解Java虚拟机,首先我们要明白Java虚拟机(JVM)的核心功能:它负责装载类文件,执行字节码,并管理内存。Java虚拟机的结构复杂且高效,主要由类装载器、执行引擎、内存管理和类库等组件构成。 类装载器是JVM...
通过阅读《深入理解Java虚拟机》第三章,开发者不仅可以深入理解Java的安全机制,还能学习到如何在实际项目中实施这些安全策略,提升应用的安全性。对于想要从事Java开发或者对系统安全有深入了解需求的人来说,这一...
读书笔记:学习周志明先生的深入理解Java虚拟机的笔记
总的来说,"深入理解Java虚拟机读书笔记之:第3章 安全(2)"主要涵盖了Java安全体系的核心概念,包括类加载器、权限模型、安全管理器以及相关工具的使用。理解这些内容对于任何希望构建安全、可靠的Java应用程序的...
读书笔记:周志明的《深入理解java虚拟机》读书笔记
读书笔记:深入理解Java虚拟机第二版_周志明读书笔记
读书笔记:java 虚拟机,深入理解Java虚拟机 JVM高级特性与最佳实践
读书笔记:周志明的《深入理解Java虚拟机》第二版的思维导图笔记
读书笔记:深入理解Java虚拟机周志明
读书笔记:周志明老师《深入理解Java虚拟机》第三版阅读笔记
读书笔记:深入理解Java虚拟机周志明著
读书笔记:深入理解Java虚拟机 JVM高级特性与最佳实践第二章笔记
读书笔记:深入理解Java虚拟机(周志明)源码及学习笔记
读书笔记:《深入理解Java虚拟机 Jvm高级特性与最佳实践第三版》阅读笔记
读书笔记:Java 核心技术; 深入理解Java虚拟机JVM高级特性与最佳实践第二版
读书笔记:深入理解Java虚拟机JVM高级特性与最佳实践
读书笔记:深入理解Java虚拟机 JVM高级特性与最佳实践
读书笔记:深入理解Java虚拟机JVM高级特性与最佳实践第3版学习笔记
读书笔记:深入理解Java虚拟机JVM高级特性与最佳实践第3版 周志明 学习笔记
读书笔记:深入理解Java虚拟机 JVM高级特性与最佳实践第3版