【性能跟踪】btrace学习三--bBTrace Annotation注解

本文深入解析了BTrace的各类注解及其用途,包括方法注解、定时器注解、错误处理注解等,并详细阐述了参数注解、类注解、未注解参数的作用,以及如何通过注解实现特征匹配、事件触发等功能。同时,文章还介绍了BTrace的Argument Annotations、Field Annotations和Class Annotations的使用场景和具体实现方式。
[xhtml] view plain copy
  1. Method Annotations  
  2. 1. @com.sun.btrace.annotations.OnMethod  
  3.     定位目标类,方法,位置,且可定位多个。target class(es), target method(s) and "location(s)" within the method(s)  
  4.     查找clazz中的类和方法。类可以是全路径定义或者正则。正则为//中间的。 /java   
  5. .awt   
  6. ..+/  
  7.     可以用annotation来确定定位范围。@javax.jws.WebService所有被WebService annotation的类。  
  8.     用+表示继承。+java.lang.Runnable可以定位所有继承自runnable接口的类。  
  9. 2. @com.sun.btrace.annotations.OnTimer  
  10.     监控需要周期运行的方法。参数 N milliseconds。  
  11. 3. @com.sun.btrace.annotations.OnError  
  12.     当被监控的btrace的任何方法抛异常的时候被触发。  
  13. 4. @com.sun.btrace.annotations.OnExit  
  14.     当BTrace调用方法exit(int)推出监控session时被触发。  
  15. 5. @com.sun.btrace.annotations.OnEvent  
  16.     当BTrace客户端从外部发出事件请求时被触发。可以用string表示事件名  
  17. 6. @com.sun.btrace.annotations.OnLowMemory  
  18.     监控内存超过临界点的方法。  
  19. 7. @com.sun.btrace.annotations.OnProbe  
  20.     用来避免吧需要监控的类或方法写死在脚本里。可以用xml文件配置来定义需要监控的方法等。运行的时候需要把这个xml文件拷到JVM的运行路径下,或者修改btracer.bat文件的probeDescPath来指定xml文件的位置。  
  21. Argument Annotations  
  22. 8. @com.sun.btrace.annotations.Self  
  23.     标记一个参数拥有this或(self)的值。  
  24. 9. @com.sun.btrace.annotations.Return  
  25.     标记一个参数持有方法return的值。  
  26. 10. @com.sun.btrace.annotations.ProbeClassName (since 1.1)  
  27.     标记一个参数持有被监控类的类名  
  28. 11. @com.sun.btrace.annotations.ProbeMethodName (since 1.1)  
  29.     标记一个参数持有被监控方法的方法名。  
  30.     1.2版本开始可以用Boolean参数fqn表是是否需要全路径名。  
  31. 12. @com.sun.btrace.annotations.TargetInstance (since 1.1)  
  32.     标记一个参数持有调用实例的值。  
  33. 13. @com.sun.btrace.annotations.TargetMethodOrField (since 1.1)  
  34.     标记一个参数持有调用方法名。  
  35.     1.2版本开始可以用Boolean参数fqn表是是否需要全路径名。  
  36. Unannotated arguments  
  37.     Unannotated arguments是用来做特征匹配的,因此必须按照被监控方法的定义顺序出现。但他们可以和标记参数交叉出现。它们的精确意义取决于使用它们的location:  
  38.     Kind.ENTRY, Kind.RETURN- the probed method arguments  
  39.     Kind.THROW - the thrown exception  
  40.     Kind.ARRAY_SET, Kind.ARRAY_GET - the array index  
  41.     Kind.CATCH - the caught exception  
  42.     Kind.FIELD_SET - the field value  
  43.     Kind.LINE - the line number  
  44.     Kind.NEW - the class name  
  45.     Kind.ERROR - the thrown exception  
  46. Field Annotations  
  47. 14. @com.sun.btrace.annotations.Export  
  48.     使用这个关联一个BTrace成员变量来指定这个成员变量和jvmstat的counter相关联。这样就可以暴露出外部jvmstat clients的监控次数。  
  49. 15. @com.sun.btrace.annotations.Property  
  50.     用来标记一个指定的成员变量作为MBean属性。如果一个BTrace类至少定义了一个用@Property注解的静态成员变量,那么MBean就会被创建并且注册到MBean服务器上。  
  51. 16. @com.sun.btrace.annotations.TLS  
  52.     定义一个BTrace的静态成员变量为线程局部变量(thread local)。因此为了正常工作这个变量必须是immutable或cloneable的。这个可以让我们用来监控是不是同一个线程会进入到多个被监控action。  
  53. Class Annotations  
  54. 17. @com.sun.btrace.annotations.DTrace  
  55.     监控DTrace的  
  56. 18. @com.sun.btrace.annotations.DTraceRef  
  57.     监控DTrace的  
  58. 19. @com.sun.btrace.annotations.BTrace  
  59.     必选annotation。用以指定java类。   
  60.   
  61.   
  62. 文档地址为http://kenai.com/projects/btrace/pages/UserGuide  
  63.   
  64.   
  65.     annotation的API补充:  
  66.     1. AnyType  
  67.         用来匹配任何引用类型。AnyType[]。用来对方法进行特征匹配。  
  68.     2. Location  
  69.         定义了需要监控的位置。可以选择不同的位置进行监控。配合Kind和Where来使用。  
  70.       Kind,枚举类型  
  71. ARRAY_GET         array element load  
  72. ARRAY_SET         array element store  
  73. CALL         method call  
  74. CATCH         exception catch  
  75. CHECKCAST         checkcast  
  76. ENTRY         method entry  
  77. ERROR         "return" because of no-catch  
  78. FIELD_GET         getting a field value  
  79. FIELD_SET         setting a field value  
  80. INSTANCEOF        instanceof check  
  81. LINE         source line number  
  82. NEW         new object created  
  83. NEWARRAY         new array created  
  84. RETURN         return from method  
  85. SYNC_ENTRY         entry into a synchronized block  
  86. SYNC_EXIT         exit from a synchronized block  
  87. THROW         throwing an exception  
  88.    
  89.       Where  
  90. AFTER         after the location of interest  
  91. BEFORE         before the location of interest  
 
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值