【性能跟踪】btrace学习四--bBTrace example

BTrace Samples

1.跟踪内存信息,用@OnTimer 这个annotation没几秒钟打印一次内存堆栈信息:

import com.sun.btrace.annotations.BTrace; import com.sun.btrace.annotations.OnTimer; import static com.sun.btrace.BTraceUtils.*; @BTrace public class TraceMemory { //heapUsage()/nonHeapUsage() – 打印堆/非堆内存信息,包括init、used、commit、max @OnTimer(4000) public static void printM(){ //打印内存信息 println("heap:"); println(heapUsage()); println("no-heap:"); println(nonHeapUsage()); } }  

 

2.打印下系统信息:

import static com.sun.btrace.BTraceUtils.*; import com.sun.btrace.annotations.BTrace; @BTrace public class TraceJInfo { static{ println("java vm properties:===>"); printVmArguments(); println("System properties:===>"); printProperties(); println("OS properties:===>"); printEnv(); exit(); } }  

 

3.正则表达式,这个匹配的是com.crm. components包下的所有的以Delegate结尾的类的所有的方法

匹配包如:/packae//.package2//..*.*/ 类似

import static com.sun.btrace.BTraceUtils.println; import static com.sun.btrace.BTraceUtils.str; import static com.sun.btrace.BTraceUtils.strcat; import com.sun.btrace.BTraceUtils; import com.sun.btrace.annotations.BTrace; import com.sun.btrace.annotations.Kind; import com.sun.btrace.annotations.Location; import com.sun.btrace.annotations.OnMethod; import com.sun.btrace.annotations.ProbeClassName; import com.sun.btrace.annotations.ProbeMethodName; import com.sun.btrace.annotations.TLS; @BTrace public class TraceAllDelegate { @TLS private static long startTime = 0; @OnMethod(clazz = "/com//.crm//.components//..*Delegate.*/", method = "/.*/") public static void startMethod(){ startTime = BTraceUtils.timeMillis(); } @OnMethod(clazz = "/com//.crm//.components//..*Delegate.*/", method = "/.*/", location = @Location(Kind.RETURN)) public static void endMethod(){ println(strcat("time taken=>",str(BTraceUtils.timeMillis()-startTime))); println("--------------------------------------"); } @OnMethod(clazz = "/com//.crm//.components//..*Delegate.*/", method = "/.*/", location = @Location(Kind.RETURN)) public static void print(@ProbeClassName String pcn,@ProbeMethodName String pmn) { println(pcn); println(pmn); } }  

 

你可能感兴趣的:(properties,正则表达式,String,System,Class,import)