异常将上下文初始化事件发送到类的侦听器实例_深入浅出JVM性能调优——JVM内存( 六 )


2650: aload_0
2661: aload_1
2672: invokespecial #16// Method com/lyyzoo/jvm/test01/Person.sayHello:(Ljava/lang/Object;)V
2685: getstatic#5// Field java/lang/System.out:Ljava/io/PrintStream;
2698: new#6// class java/lang/StringBuilder
27011: dup
27112: invokespecial #7// Method java/lang/StringBuilder."":()V
27215: ldc#17// String User say hello:
27317: invokevirtual #9// Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
27420: aload_1
27521: invokevirtual #9// Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
27624: invokevirtual #12// Method java/lang/StringBuilder.toString:()Ljava/lang/String;
27727: invokevirtual #13// Method java/io/PrintStream.println:(Ljava/lang/String;)V
27830: return
279LineNumberTable:
280line 48: 0
281line 49: 5
282line 50: 30
283LocalVariableTable:
284StartLengthSlotNameSignature
285【第一个参数为 this】
2860310thisLcom/lyyzoo/jvm/test01/User;
2870311strLjava/lang/String;
288MethodParameters:
289NameFlags
290str
291
292public int willThrowException();
293descriptor: ()I
294flags: ACC_PUBLIC
295Code:
296stack=2, locals=5, args_size=1
2970: iconst_0
2981: istore_1
2992: bipush10
3004: iload_1
3015: idiv
3026: istore_2
3037: iload_2
3048: istore_3
3059: getstatic#5// Field java/lang/System.out:Ljava/io/PrintStream;
30612: ldc#18// String finally handle
30714: invokevirtual #13// Method java/io/PrintStream.println:(Ljava/lang/String;)V
30817: iload_3
30918: ireturn
31019: astore_2
31120: getstatic#5// Field java/lang/System.out:Ljava/io/PrintStream;
31223: ldc#20// String catch exception
31325: invokevirtual #13// Method java/io/PrintStream.println:(Ljava/lang/String;)V
31428: iload_1
31529: istore_3
31630: getstatic#5// Field java/lang/System.out:Ljava/io/PrintStream;
31733: ldc#18// String finally handle
31835: invokevirtual #13// Method java/io/PrintStream.println:(Ljava/lang/String;)V
31938: iload_3
32039: ireturn
32140: astore4
32242: getstatic#5// Field java/lang/System.out:Ljava/io/PrintStream;
32345: ldc#18// String finally handle
32447: invokevirtual #13// Method java/io/PrintStream.println:(Ljava/lang/String;)V
32550: aload4
32652: athrow
327【方法异常表】
328Exception table:
329fromtotarget type
3302919Class java/lang/Exception
3312940any
332193040any
333404240any
334LineNumberTable:
335line 54: 0
336line 56: 2
337line 57: 7
338line 62: 9
339line 57: 17
340line 58: 19
341line 59: 20
342line 60: 28
343line 62: 30
344line 60: 38
345line 62: 40
346line 63: 50
347LocalVariableTable:
348StartLengthSlotNameSignature
3497122rI
35020202eLjava/lang/Exception;
3510530thisLcom/lyyzoo/jvm/test01/User;
3522511iI
353StackMapTable: number_of_entries = 2
354frame_type = 255 /* full_frame */
355offset_delta = 19
356locals = [ class com/lyyzoo/jvm/test01/User, int ]
357stack = [ class java/lang/Exception ]
358frame_type = 84 /* same_locals_1_stack_item */
359stack = [ class java/lang/Throwable ]
360
361public void sayHello(java.lang.Object);
362descriptor: (Ljava/lang/Object;)V
363【重载泛型方法时,会多出 ACC_BRIDGE、ACC_SYNTHETIC 两个标志,ACC_BRIDGE代表是jvm自动生成的桥接方法,ACC_SYNTHETIC代表是jvm生成的不可见方法】
364flags: ACC_PUBLIC, ACC_BRIDGE, ACC_SYNTHETIC
365Code:
366stack=2, locals=2, args_size=2
3670: aload_0
3681: aload_1
3692: checkcast#21// class java/lang/String