JVM虚拟机如何查看.class文件

本文详细介绍了Java Class文件的结构,包括魔数CAFEBABE和版本号的含义。魔数用于识别文件类型,而版本号则指示了编译时使用的JDK版本。例如,00000031表示使用JDK1.5编译。通过理解这些细节,有助于深入理解Java虚拟机的工作原理。
摘要由CSDN通过智能技术生成

      Java标志是一杯热咖啡,这杯热咖啡你很难与计算机编程联想到一起,这杯热咖啡却是Java这个名字的由来。故事是这样的,JAVA语言起名时,简姆斯 古斯林注意到自己办公室外一棵茂密的橡树Oak,这是一种在硅谷很常见的树。所以他将这个新语言命名为Oak。但Oak是另外一个注册公司的名字。这个名字不可能再用了。他的一个同事马克 奥颇门(Mark Opperman)在一家咖啡店于同事品尝咖啡时得到了灵感,想到了Java一词。Java是印度尼西亚爪哇岛的英文名称,因盛产咖啡而闻名。国外的许多咖啡店用Java来命名或宣传,以彰显其咖啡的品质。Java语言中的许多库类名称,多与咖啡有关,如JavaBeans(咖啡豆)、NetBeans(网络豆)以及ObjectBeans (对象豆)等等。

      Class文件全名称为Java class文件,它是一组以8位字节为基础单位的二进制流,当我们运行JAVA程序的时候,首先.java文件需要先编译成.class文件,任何一个Class文件都对应着唯一一个类或接口的定义信息,Java虚拟机(JVM)加载class文件并运行

 

        当我们用UltraEditor打开一个class类后,每个Class文件的头4个字节我们叫他魔数 (Magic Number)。仔细看上图中的数CAFE BABE(咖啡宝贝),它标识这个文件是否是能够被虚拟机接收的Class文件

      紧接着魔数的存储的是Class文件的版本号,Java的版本号是从45开始的,JDK 1.1之后的每个JDK大版本发布主版本号向上加1(JDK 1.0~1.1使用了45.0~45.3的版本号)

00 00 : 表示主版本号,将16进制数0000转换成10进制后的数字是0,表示次版本号为0

00 31:表示次版本号,将16进制数0031转换成10进制后的数字是49,表示主版本号为49

00 00 00 31表示49.0版本,对应的JDK版本是1.5

综上图中 CA FE BA BE 00 00 00 31 表示本文件是JVM可加载的 class文件, 编译使用的JDK版本是JDK1.5

JDK版本号

Class版本号

16进制

1.1

45.0

00 00 00 2D

1.2

46.0

00 00 00 2E

1.3

47.0

00 00 00 2F

1.4

48.0

00 00 00 30

1.5

49.0

00 00 00 31

1.6

50.0

00 00 00 32

1.7

51.0

00 00 00 33

1.8

52.0

00 00 00 34

上一篇:JVM如何读GC日志以及如何使用工具分析https://blog.csdn.net/Beijing_L/article/details/120217862icon-default.png?t=L9C2https://blog.csdn.net/Beijing_L/article/details/120217862

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

=PNZ=BeijingL

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值