Btrace测试

偶尔看到BTrace,必须记录一下

利用hotSpot虚拟机可以动态替换class的特点而完成的,可以对online的程序动态的改变类的行为(一般为加些打印日志),进而进行线上调试的一个工具。

使用方式:
1.jmap -histo:live [pid]  检查那个类实例特别多

2.定位代码
如果是HashTable的问题,那么就要定位出什么代码引起的

接下来自然要看看是什么代码往HashTable里疯狂的put数据,于是用神器btrace跟踪Hashtable.put调用的堆栈。
首先写btrace脚本TracingHashTable.java:
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*;

@BTrace
public class TracingHashTable {
        /*指明要查看的方法,类*/
        @OnMethod(
            clazz="java.util.Hashtable",
            method="put",
            location=@Location(Kind.RETURN))
        public static void traceExecute(@Self java.util.Hashtable object){
                println("调用堆栈!!");
                jstack();
        }
}


3.安装
下载wget http://kenai.com/projects/btrace/downloads/download/releases/release-1.2.2/btrace-bin.zip
解压,chmod 777 btrace

4.bin/btrace -cp build [pid] TracingHashTable.java
就可以看到方法的调用栈

你可能感兴趣的:(BTrace)