查看16进制格式的ClassFile
- sublime / notepad
- IDEA插件 - binEd
class文件内容
public class Test {
}
- 编译改类,生成class文件,使用sublime打开
cafe babe 0000 0034 0010 0a00 0300 0d07
000e 0700 0f01 0006 3c69 6e69 743e 0100
0328 2956 0100 0443 6f64 6501 000f 4c69
6e65 4e75 6d62 6572 5461 626c 6501 0012
4c6f 6361 6c56 6172 6961 626c 6554 6162
6c65 0100 0474 6869 7301 0019 4c63 6f6d
2f78 6961 6368 772f 6a76 6d74 6573 742f
5465 7374 3b01 000a 536f 7572 6365 4669
6c65 0100 0954 6573 742e 6a61 7661 0c00
0400 0501 0017 636f 6d2f 7869 6163 6877
2f6a 766d 7465 7374 2f54 6573 7401 0010
6a61 7661 2f6c 616e 672f 4f62 6a65 6374
0021 0002 0003 0000 0000 0001 0001 0004
0005 0001 0006 0000 002f 0001 0001 0000
0005 2ab7 0001 b100 0000 0200 0700 0000
0600 0100 0000 0300 0800 0000 0c00 0100
0000 0500 0900 0a00 0000 0100 0b00 0000
0200 0c
观察ByteCode方法
- JDK自带工具 javap
javap命令,显示class信息,详细如下:
C:\>javap D:\idea_gitlab_workspace\test111\out\production\test111\com\xiachw\singleton\test.class
Compiled from "test.java"
public class com.xiachw.singleton.test {
public com.xiachw.singleton.test();
}
C:\>javap -v D:\idea_gitlab_workspace\test111\out\production\test111\com\xiachw\singleton\test.class
Classfile /D:/idea_gitlab_workspace/test111/out/production/test111/com/xiachw/singleton/test.class
Last modified 2020-3-16; size 279 bytes
MD5 checksum 397d3394b815cace1c735cf9338410e3
Compiled from "test.java"
public class com.xiachw.singleton.test
minor version: 0
major version: 52
flags: ACC_PUBLIC, ACC_SUPER
Constant pool:
#1 = Methodref #3.#13 // java/lang/Object."<init>":()V
#2 = Class #14 // com/xiachw/singleton/test
#3 = Class #15 // java/lang/Object
#4 = Utf8 <init>
#5 = Utf8 ()V
#6 = Utf8 Code
#7 = Utf8 LineNumberTable
#8 = Utf8 LocalVariableTable
#9 = Utf8 this
#10 = Utf8 Lcom/xiachw/singleton/test;
#11 = Utf8 SourceFile
#12 = Utf8 test.java
#13 = NameAndType #4:#5 // "<init>":()V
#14 = Utf8 com/xiachw/singleton/test
#15 = Utf8 java/lang/Object
{
public com.xiachw.singleton.test();
descriptor: ()V
flags: ACC_PUBLIC
Code:
stack=1, locals=1, args_size=1
0: aload_0
1: invokespecial #1 // Method java/lang/Object."<init>":()V
4: return
LineNumberTable:
line 3: 0
LocalVariableTable:
Start Length Slot Name Signature
0 5 0 this Lcom/xiachw/singleton/test;
}
SourceFile: "test.java"
- IDEA插件-jclasslib
先把类编译一下,将光标放到类体上,选择菜单中的 view-> Show Bytecode With Jclasslib,帮你分析class的内容。
class文件各部分内容代表内容
xmind总结class文件各部分内容