0
点赞
收藏
分享

微信扫一扫

Linux socket编程(4):服务端fork之僵尸进程的处理

目标践行者 2023-11-20 阅读 14
javajvm

文章目录

原理分析

class 文件,即字节码文件,它有特定的二进制格式,这种格式是由 JVM 规范规定的,不受特定硬件或操作系统的影响。
字节码文件的二进制格式主要有如下部分:

  1. magic number(魔数):开头4个字节,始终为 CAFE BABE
  2. version(版本号):接下来4个字节表示 Java 的版本。其中,前2个字节是 minor version(次版本号),后2个字节是 major version(主版本号);

所以,可以通过查看 class 文件的 major version 来确定其对应的编译器版本。

解决方案

打开 Visual Studio Code,点击“插件”图标,搜索并安装插件 Hex Editor
Visual Studio Code 搜索插件 Hex Editor
Hex Editor

使用 Hex Editor 打开对应的 class 文件,查看文件第一行的索引号为 06 及 07 这两个字节(这里为 00 32),得到对应的 major version
App.class

然后通过 Java 版本对照表,即可知道 class 文件是由哪个版本的 Java 编译器编译生成的了(比如上面示例的 class 文件对应编译器版本为 JDK 6)

Java JDKmajor version(十进制)major version(十六进制)
18620x3e
17610x3d
16600x3c
15590x3b
14580x3a
13570x39
12560x38
11550x37
10540x36
9530x35
8520x34
7510x33
6500x32
5490x31
1.4480x30
1.3470x2f
1.2460x2e
1.1450x2d

其它解决方案

javap 命令行工具

javap -verbose App.class

javap -verbose

举报

相关推荐

0 条评论