1. 程式人生 > >VisualVM-BTrace外掛使用備忘

VisualVM-BTrace外掛使用備忘

應用場景:

               伺服器不適合重啟,除錯資訊又不足夠進行排錯分析的時候

工具:

              新增外掛BTrace的 VisualVM (工具-外掛,安裝)

操作步驟:

                選擇應用程式右鍵,選擇traceApplication選項

                編寫程式碼

                書本中的例子:

                 /* BTrace Script Template */                  import com.sun.btrace.annotations.*;                  import static com.sun.btrace.BTraceUtils.*;

                @BTrace                 public class TracingScript {                /* put your code here */               @OnMethod(clazz="com.jiang.JavaVmMemory.BTraceTst",method="add",[email protected](Kind.return))                public static void func(@Self com.jiang.JavaVmMemory.BTraceTst instance,int a,int b,@Return int result){                      println("call:");                      jstack();                      println(strcat("method param A:",str(a)));                      println(strcat("method param B:",str(b)));                      println(strct(strcat("mehod result:",str(result))));                   }                }

             點選start...

             操作應用程式,可以檢視到需要的資訊

原理分析:

               BTrace 主要使用了 Instrumentation + ASM技術來實現對正在執行程序的探測。

              Instrumentation :

              構建一個獨立於應用程式的代理程式(Agent),用來監測和協助執行在 JVM 上的程式,甚至能夠替換和修改某些類的               定義。實際上提供了一種虛擬機器級別支援的 AOP 實現方式,使得開發者無需對 JDK 做任何升級和改動,就可以實現某                些 AOP 的功能了。

               ASM:

              ASM 是一個 Java 位元組碼操控框架。它能被用來動態生成類或者增強既有類的功能。