java插件减少代码入侵_AWACS是一款无代码侵入的APM

AWACS

68747470733a2f2f7472617669732d63692e6f72672f6172636865726665656c2f61776163732e7376673f6272616e63683d6d617374657268747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d415041434845322d626c75652e73766768747470733a2f2f696d672e736869656c64732e696f2f62616467652f41574143532d302e322e352d6f72616e67652e737667

Overview

AWACS is a non-intrusive Java APM.

Features

Realtime monitoring

No SDK dependence for users

Plugin based architecture

Little performance effect

Easy to deploy

Before transformed:

public java.lang.String hello1(java.lang.String);

descriptor: (Ljava/lang/String;)Ljava/lang/String;

flags: ACC_PUBLIC

Code:

stack=2, locals=3, args_size=2

0: new #2 // class java/util/Random

3: dup

4: invokespecial #3 // Method java/util/Random."":()V

7: astore_2

8: aload_2

9: invokevirtual #19 // Method java/util/Random.nextInt:()I

12: iconst_2

13: irem

14: ifne 20

17: ldc #23 // String hello, world

19: areturn

20: new #10 // class java/lang/RuntimeException

23: dup

24: invokespecial #21 // Method java/lang/RuntimeException."":()V

27: athrow

LineNumberTable:

line 76: 0

line 77: 8

line 78: 17

line 79: 20

LocalVariableTable:

Start Length Slot Name Signature

0 28 0 this Lio/awacs/demo/TestController;

0 28 1 s Ljava/lang/String;

8 20 2 r Ljava/util/Random;

StackMapTable: number_of_entries = 1

frame_type = 252 /* append */

offset_delta = 20

locals = [ class java/util/Random ]

RuntimeVisibleAnnotations:

0: #79(#80=[s#95])

After transformed:

public java.lang.String hello1(java.lang.String);

descriptor: (Ljava/lang/String;)Ljava/lang/String;

flags: ACC_PUBLIC

Code:

stack=4, locals=4, args_size=2

0: invokestatic #38 // Method io/awacs/plugin/stacktrace/CallStack.initStack:()V

3: ldc #40 // String io.awacs.demo.TestController

5: ldc #123 // String hello1

7: invokestatic #45 // Method io/awacs/plugin/stacktrace/CallStack.methodEnter:(Ljava/lang/String;Ljava/lang/String;)V

10: new #19 // class java/util/Random

13: dup

14: invokespecial #20 // Method java/util/Random."":()V

17: astore_2

18: aload_2

19: invokevirtual #111 // Method java/util/Random.nextInt:()I

22: iconst_2

23: irem

24: ifne 36

27: ldc #125 // String hello, world

29: invokestatic #77 // Method io/awacs/plugin/stacktrace/CallStack.methodQuit:()V

32: invokestatic #80 // Method io/awacs/plugin/stacktrace/CallStack.incrAccess:()V

35: areturn

36: new #33 // class java/lang/RuntimeException

39: dup

40: invokespecial #114 // Method java/lang/RuntimeException."":()V

43: invokestatic #77 // Method io/awacs/plugin/stacktrace/CallStack.methodQuit:()V

46: invokestatic #80 // Method io/awacs/plugin/stacktrace/CallStack.incrAccess:()V

49: athrow

50: astore_2

51: aload_2

52: invokestatic #101 // Method io/awacs/plugin/stacktrace/CallStack.incrFailure:(Ljava/lang/Throwable;)V

55: aload_2

56: athrow

Exception table:

from to target type

10 35 50 Class java/lang/RuntimeException

36 49 50 Class java/lang/RuntimeException

LocalVariableTable:

Start Length Slot Name Signature

10 40 0 this Lio/awacs/demo/TestController;

10 40 1 s Ljava/lang/String;

18 32 2 r Ljava/util/Random;

LineNumberTable:

line 76: 10

line 77: 18

line 78: 27

line 79: 36

StackMapTable: number_of_entries = 2

frame_type = 252 /* append */

offset_delta = 36

locals = [ class java/util/Random ]

frame_type = 255 /* full_frame */

offset_delta = 13

locals = [ class io/awacs/demo/TestController, class java/lang/String ]

stack = [ class java/lang/RuntimeException ]

RuntimeVisibleAnnotations:

0: #7(#8=[s#122])

Documents

Contributors

License

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值