在路上

          路上有驚慌,路上有理想

            BlogJava :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
            28 Posts :: 1 Stories :: 10 Comments :: 0 Trackbacks
          BTrace是一個實時監(jiān)控工具,使用了java agent jvm attach技術(shù),可以在product的情況下實時監(jiān)控線上程序的運行情況。另,有插件可與visualVM一起使用。
          不多說了,具體的可見:http://kenai.com/projects/btrace

          下面介紹幾個Helloworld示例:
          主要使用了btrace命令:btrace [pid] class

          pid可由jps命令快速查詢

          1.監(jiān)控方法輸入?yún)?shù):
           @OnMethod(
                          clazz="com.btrace.Person",
                          method="/set.*/"
                      )
                      public static void anyRead(@ProbeClassName String pcn, @ProbeMethodName String pmn, AnyType[] args) {
                          println(pcn);
                          println(pmn);
                          printArray(args);
                      }

          執(zhí)行btract命令
          后臺輸出:
          com.btrace.Person
          setId
          [1, ]……

          2.監(jiān)控方法返回值
            @OnMethod(
                           clazz="com.btrace.Person",
                           method="/get.*/",
                           location=@Location(Kind.RETURN)
                         )  
               public static void defineclass(@Return String cl) {
                     println(Strings.strcat("getValue ", cl));
                     Threads.jstack();
                 }
          執(zhí)行btract命令
          后臺輸出:
          getValue gum
          com.btrace.TestThread.main(TestThread.java:23)

          3.監(jiān)控jvm內(nèi)存使用情況
            @OnTimer(4000)
              public static void printMem() {
                  println("Heap:");
                  println(heapUsage());
                  println("Non-Heap:");
                  println(nonHeapUsage());
              }
          執(zhí)行btract命令
          后臺輸出:
          Heap:
          init = 268435456(262144K) used = 26175176(25561K) committed = 251658240(245760K)
           max = 492175360(480640K)
          Non-Heap:
          init = 12746752(12448K) used = 5892104(5754K) committed = 13598720(13280K) max =
           100663296(98304K)
          4.監(jiān)控方法執(zhí)行時間
             @TLS private static long startTime;
             
              @OnMethod(clazz="com.btrace.Person",method="setId")
              public static void onCall(){
                  println("enter this method");
                  startTime=timeMillis();
              }
             
              @OnMethod(clazz="com.btrace.Person",method="setId",location=@Location(Kind.RETURN))
              public static void onReturn(){
                  println("method end!");
                  println(strcat("Time taken ms",str(timeMillis()-startTime)));
              }
            后臺輸出:
             enter this method
             method end!
             Time taken ms0
          5.監(jiān)控Thread start
           @OnMethod(
                  clazz="java.lang.Thread",
                  method="start"
              )
              public static void func() {
                  println("about to start a thread!");
              }
          后臺輸出:about to start a thread!
          posted on 2010-12-10 18:30 阮步兵 閱讀(3760) 評論(1)  編輯  收藏 所屬分類: Java

          Feedback

          # Air Jordan Shoes 2010-12-11 11:36 Air Jordan Shoes
          嗯謝謝分享  回復(fù)  更多評論
            

          主站蜘蛛池模板: 田林县| 霍邱县| 若羌县| 秀山| 伊金霍洛旗| 玉龙| 玉山县| 茌平县| 新建县| 屯门区| 绥阳县| 富锦市| 靖远县| 茌平县| 金平| 神农架林区| 宜春市| 白沙| 海安县| 丽江市| 三河市| 平和县| 韶关市| 敦煌市| 通河县| 翁源县| 黔江区| 施甸县| 喀喇沁旗| 全南县| 曲周县| 攀枝花市| 晋宁县| 阳曲县| 收藏| 巴林左旗| 澳门| 图木舒克市| 彝良县| 韶关市| 那坡县|