新建Decompilation.java文件
java">public class Decompilation {private Object object = new Object();public void insert(Thread thread) {synchronized (object) {}}
}
编译
javac Decompilation.java
反编译获得字节码指令
javap -verbose Decompilation.class
public void insert(java.lang.Thread);descriptor: (Ljava/lang/Thread;)Vflags: ACC_PUBLICCode:stack=2, locals=4, args_size=20: aload_01: getfield #3 // Field object:Ljava/lang/Object;4: dup5: astore_26: monitorenter // 要获取到锁7: aload_28: monitorexit // 释放锁9: goto 1712: astore_313: aload_214: monitorexit // 释放锁,第二个出口。一个锁入口,两个锁出口(正常退出 + 异常退出)15: aload_316: athrow17: returnException table:from to target type7 9 12 any12 15 12 anyLineNumberTable:line 5: 0line 7: 7line 8: 17StackMapTable: number_of_entries = 2frame_type = 255 /* full_frame */offset_delta = 12locals = [ class Decompilation, class java/lang/Thread, class java/lang/Object ]stack = [ class java/lang/Throwable ]frame_type = 250 /* chop */offset_delta = 4