jvm-class文件简介
2024-08-25 18:49:22
jvm全称 java virtual machine (java虚拟机),也就是在计算机上再虚拟一个计算机,它存在于计算机内存中并运行在操作系统之上的。
javap -v class文件名 > 输出文件名 命令:将class文件,翻译成可读懂的字节码指令文件,里面包含了各种各样的指令。
字节码文件(Java中是16进制文件)是经过编译器预处理过的一种文件,是Java的执行文件存在形式,是一组以8位字节为基础单位的二进制流。各个数据项严格按顺序排列。但是不可以被系统直接执行,而是需要虚拟机解释执行。
Class文件格式採用一种类似于C语言结构体的伪结构来存储数据。这样的伪结构仅仅有两种数据类型:无符号数和表。
无符号数:是基本数据类型。以u1、u2、u4、u8分别代表1个字节、2个字节、4个字节、8个字节的无符号数,能够用来描写叙述数字、索引引用、数量值或者依照UTF-8编码构成的字符串值。
表:由多个无符号数或者其它表作为数据项构成的复合数据类型。全部表都习惯性地以“_info”结尾。整个Class文件本质上就是一张表。
魔数:
每一个class文件的头4个字节称为魔数,它唯一的作用是确定这个文件是否为一个能被虚拟机接受的Class文件。Class文件的魔数为:0xCAFEBABE。
版本:
第五六个字节是次版本(Minor Version)。第7和第8个字节是主版本(Major Version)。
高版本号的JDK能够向下兼容曾经版本号的Class文件,可是无法执行以后版本号的Class文件,即使文件格式并未发生变化,虚拟机也必须拒绝执行超过其版本号号的Class文件。
常量池:
最新文章
- 模块化之Spring3.0 web fragment和gradle构建项目
- Thrift的TCompactProtocol紧凑型二进制协议分析
- 【转载】Pyqt QSplitter分割窗口
- Jvm支持的最大线程数
- __KERNEL__ macro
- vb.net机房收费系统之组合查询
- linux面试题3
- 如何判断MSSQL数据库磁盘出现了瓶颈
- Android 仿QQ微信开场导航以及登陆界面
- TensorFlow深度学习笔记 文本与序列的深度模型
- thinkphp中的_get,_post,_request
- OpenStack及其构成简介
- 深入理解Java虚拟机--下
- softmax_cross_entropy_with_logits
- Linux环境下jdk1.8压缩包下载
- oracle sequence 异常
- 基于ASP.NET MVC 微信网页登录授权(scope为snsapi_base) 流程 上 获取OPENID
- dirlock.go
- BZOJ_2141_排队_树状数组+分块
- PoiDocxDemo【Android将表单数据生成Word文档的方案之二(基于Poi4.0.0),目前只能java生成】