最简单的Btrace查询System.gc的调用

之前搞过,现在做一个demo。试试以前的例子。

一:测试代码如下:

public class MyTest {
	public static void main(String[] args) {
		new MyTest().test();
	}

	void test() {
		System.out.println(1);//debug 1
		System.gc();//debug2
		System.out.println(2);//debug3
	}
}

这里,运行此代码,然后在debug1 处停住,然后做第二件事。


二:Btrace

    1:在jdk bin下有一个工具jvisualvm.exe,打开后点击工具,插件,然后安装BTrace Workbench,重启jvisualvm.exe

    2:在本地的地方找到你运行的java程序MyTest 然后鼠标右键Trace  application,在打开的页面放下面代码,然后点击Start


 

/* BTrace Script Template */
import static com.sun.btrace.BTraceUtils.jstack;
import static com.sun.btrace.BTraceUtils.println;
import static com.sun.btrace.BTraceUtils.str;
import static com.sun.btrace.BTraceUtils.strcat;
import static com.sun.btrace.BTraceUtils.timeMillis;

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.TLS;
@BTrace
public class TraceHelloWorld {
 @OnMethod(clazz = "java.lang.System", method = "gc" )
 public static void startMethod(){
  println("****************************************");
  jstack();
  println("****************************************");
 }
 @OnMethod(clazz = "java.lang.System", method = "gc", location = @Location(Kind.RETURN))
 public static void endMethod(){
  println("=========================================");
  jstack();
  println("=========================================");
 }
}

==

三:

将一中的程序走过debug2,然后看jvisualvm.exe的输出,如此便可以看到调用System,gc的调用过程。



四:下载官方的https://kenai.com/projects/btrace  在这里面找到   https://kenai.com/projects/btrace/downloads/directory/releases

        我这里有一个下载是:https://kenai.com/projects/btrace/downloads/download/releases/release-1.2.5.1/btrace-bin.tar.gz


       在bin目录下有执行的命令。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值