Class文件是JVM虚拟机可以理解的字节码文件,class文件并不是JAVA的专用文件,现在有很多语言都会生成可在JVM上运行的.class文件,比如JRuby,Groovy等等。
这里介绍一下.class文件的具体结构。
Class文件是二进制流,其中包含了一组8为字节为单位的基本单位,其中,各个基本元素之间都是紧密相连的,彼此之间没有空隙。当一个元素的数据大于1个字节的情况,就会按照高位在前的方式为其分配空间,将其放置在若干个字节中。
在Class文件中,只有两种数据类型:无符号数和表。
其中无符号数包括u1,u2,u4,u8,后面的数字代表其所占字节数,比如u4就表示4个字节。无符号数一般可表示数字,索引引用,数量值。或者按照UTF-8编码构成的字符串值。
而表则是由多个无符号数和其他表构成的复合型数据类型(无符号数和表的区别和和java语言中的基础类型与类有点类似),表习惯性的用_info结束。
下面是Class文件格式
类型 | 名称 | 数量 | 简要说明 | u4 | magic | 1 | 魔数,表示该文件是JVM认识的class文件,其值为0xCAFEBABE (可记忆为咖啡宝贝~) | u2 | minor_version | 1 | 次版本号 |
u2 | major_version | 1 | 主版本号 |
u2 | constant_pool_count | 1 | 常量池容量计数值 |
cp_info | constant_pool | constant_pool_count-1 | 详见其他文章 |
u2 | access_flags | 1 | 用于识别一些类或者接口的访问信息,比如,是否是接口,是否public等 |
u2 | this_class | 1 | 类索引 |
u2 | super_class | 1 | 父类索引 |
u2 | interfaces_count | 1 | 接口数量 |
u2 | interfaces | intercaces_count-1 | 接口索引 |
u2 | fields_count | 1 | 字段表数量 |
field_info | fields | fields_count-1 | 详见其他文章 |
u2 | methods_count | 1 | 方法表数量 |
method_info | methods | methods_count-1 | 详见其他文章 |
u2 | attributes_count | 1 | 属性表数量 |
attribute_info | attributes | attributes _count-1 | 详见其他文章 |
分享到:
相关推荐
JVM图解-JVM指令-JVM原型图.rar
nginx-upstream-jvm-route 支持nginx版本1.15 解决nginx: [emerg] invalid parameter "srun_id=tomcat1" 问题
bcprov-ext-jdk15on-1.54.jar、bcprov-jdk15on-1.54.jar和ssl-provider-jvm16-0.2.jar附件下载
Moonbox(月光宝盒)是JVM-Sandbox生态下的,基于jvm-sandbox-repeater重新开发的一款流量回放平台产品。在jvm-sandbox-repeater基础上提供了更加丰富功能,同时便于线上部署和使用,更多对比参考。 使用场景 你...
赠送Maven依赖信息文件:metrics-jvm-3.1.5.pom; 包含翻译后的API文档:metrics-jvm-3.1.5-javadoc-API文档-中文(简体)版.zip; Maven坐标:io.dropwizard.metrics:metrics-jvm:3.1.5; 标签:jvm、metrics、...
此资源有两个文件,含 nginx-upstream-jvm-route 和 nginx 对应版本,都是tar.gz文件。 安装方法网上很多就不写了,亲测可用。 不用担心版本不匹配造成安装失败,再浪费积分去到处下载尝试的烦恼。 此资源有两个文件...
java jvm 参数 -Xms -Xmx -Xmn -Xss -
JVM基础-超清文字版.pdf 这个是带完整目录书签的文字版本,文本内容可以复制的哦
1、java虚拟机的基本介绍。 2、字节码的执行 3、常用的jvm参数配置 4、算法和种类 5、gc参数配置 6、类加载器 7、性能监控工具 8、jvm堆栈分析
赠送Maven依赖信息文件:metrics-jvm-3.1.5.pom; 包含翻译后的API文档:metrics-jvm-3.1.5-javadoc-API文档-中文(简体)-英语-对照版.zip; Maven坐标:io.dropwizard.metrics:metrics-jvm:3.1.5; 标签:jvm、...
JVM规范--高手总结 Java相关 1 1.1Java定义 1 1.2Java的开发流程 1 1.3Java运行的原理 2 1.4半编译半解释 3 1.5平台无关性 4 JVM内存模型 4 2.1 JVM规范 5 2.2 Sun JVM 8 2.3 SUN JVM内存管理(优化) 10 2.4 SUN JVM...
kotlinx-coroutines-io-jvm-0.1.1.jar
jvm-full-gc调优-jvm-full-gc
jvm调优-jvm
NULL 博文链接:https://wensiqun.iteye.com/blog/1125503
JVM实战-JVM类加载机制案例分析
JVM 的运行机制 多线程 JVM 的内存区域 JVM 会创建操作系统的接口创建一个原生线程。JVM 线程和操作系统线程是一一对应的
nginx_upstream_jvm_route 是一个 Nginx 的扩展模块,用来实现基于 Cookie 的 Session Sticky 的功能。 安装方法(进入Nginx源码目录): #patch -p0 < /path/to/this/directory/jvm_route.patch # ./configure -...
nginx-upstream-jvm-route-0.1.tar.gz 用来实现Nginx Tomcat 集群session复制的问题!
JVM原理-jvm内存及相关图示