设为首页 加入收藏

TOP

线上性能检测工具之Btrace(二)
2015-02-02 14:17:04 来源: 作者: 【 】 浏览:24
Tags:性能 检测 工具 Btrace
xecute", location =@Location(Kind.RETURN))?


? ? public static voidtraceExecute(@ProbeClassName String name,@ProbeMethodName String method,intsleepTime){?


? ? ? ? println(strcat("theclass name=>", name));?


? ? ? ? println(strcat("the classmethod=>", method));?


? ? ? ? println(strcat("theclass method params=>", str(sleepTime)));?


? ? ? ? ?


? ? }?


? ?


? ? @OnTimer(4000)


? ? public static void printMem() {


? ? ? ? println("Heap:");


? ? ? println(Sys.Memory.heapUsage());


? ? ? println("Non-Heap:");


? ? ? println(Sys.Memory.nonHeapUsage());


? ? }


}?


上面源码有几点注意的:


1、 @BTrace 这个annotation表明这个类是btrace脚本,


2、@OnMethod(clazz = " com.btrace.EasyBtraceTest ",method = "execute")


中clazz标明要监控那个类,也可以用正则匹配的方式,method标明要监控类的哪个方法


?


5、运行和具体使用


代码写好了,将EasyBtraceTest程序跑起来,看到每个几秒控制台就会有信息输出:


sleep time is=>3774


sleep time is=>1883


sleep time is=>3863


….


说明程序已经在跑了。


用TraceEasyBtrace.java这个脚本来监控EasyBtraceTest


前提条件:


两个目录:


TraceEasyBtrace.java? 所在的目录,在D:\develop\eclipse\work\performance\src\com\btrace下


JAVA的bin目录下,用JPS查看进程id(应用每次运行可能都会变动,要在本机运行)


我的目录在:


C:\Users\fan>cd C:\Program Files\Java\jdk1.6.0_25\bin


?


获得运行的JAVA的进程ID;


进入命令行:


Microsoft Windows [版本 6.1.7601]


版权所有 (c) 2009 MicrosoftCorporation。保留所有权利。


?


C:\Users\fan>cd C:\Program Files\Java\jdk1.6.0_25\bin


?


C:\Program Files\Java\jdk1.6.0_25\bin>jps


7364 EasyBtraceTest


2268


5392


6816 Jps


?


C:\Program Files\Java\jdk1.6.0_25\bin>


?


其中,7364 EasyBtraceTest 就是我们这个应用的PID。


这时候在TraceEasyBtrace.java 所在的目录下运行命令btrace 7364 TraceEasyBtrace.java,结果如下:


Microsoft Windows [版本 6.1.7601]


版权所有 (c) 2009 MicrosoftCorporation。保留所有权利。


?


C:\Users\fan>cd C:\Program Files\Java\jdk1.6.0_25\bin


?


C:\Program Files\Java\jdk1.6.0_25\bin>jps


7364 EasyBtraceTest


2268


5392


6816 Jps


?


C:\Program Files\Java\jdk1.6.0_25\bin>d:


?


D:\>cd D:\develop\eclipse\work\performance\src\com\btrace


?


D:\develop\eclipse\work\performance\src\com\btrace>btrace 7364TraceEasyBtrace.java


Heap:


init = 0(0K) used = 1005544(981K) committed = 5177344(5056K) max =66650112(65088K)


Non-Heap:


init = 12746752(12448K) used = 5666640(5533K) committed = 13303808(12992K)max = 100663296(98304K)


the class name=>com.btrace.EasyBtraceTest


the class method=>execute


the class method params=>3011


the class method execute time=>3012


-------------------------------------------


the class name=>com.btrace.EasyBtraceTest


the class method=>execute


the class method params=>2849


the class method execute time=>2850


?…


可以看到每当execute方法执行时,就会打印出一行信息。打印出了类名,方法名,参数,以及这个方法执行的时间。以及内存的使用情况;


这就是一个非常简单的btrace监控,还可以用于数据库执行语句的监控,多线程的监控,WebService的监控等。


首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Java垃圾收集器之Serial收集器 下一篇Android启动Activity前确定Intent..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: