btrace 笔记
转载请注明原链接地址 http://www.cnblogs.com/dongxiao-yang/p/6134393.html
btrace 是一个可以不用重启线上java业务查问题的神器,记一下自己折腾半天写的几个demo
java业务代码
package com.youku.data.test.kfktest; /**
* Hello world!
*
*/
public class App {
public static void main(String[] args) throws InterruptedException {
System.out.println("Hello World!"); int[] a = new int[] {
20,
21,
21,
21,
22,
19,
24,
27,
20,
34,
23,
20,
17,
21,
20,
18,
19,
20,
24,
20,
23,
22,
27
}; //int s=0;
BtraceTest bt = new BtraceTest();
while(true)
{
for(int i:a)
{
bt.getret(i);
Thread.sleep(100);
} Thread.sleep(500); } //System.out.println(s); }
}
package com.youku.data.test.kfktest;
public class BtraceTest {
private long ret = 0;
public long getret(int num) {
ret += num;
// Thread.sleep(10);
method1();
method2();
method3();
return ret;
}
private void method1() {
String a = "asdfadsfa" + "sdfasdfdsf";
}
private void method2() {
double a = 1000 / 3.14;
}
private void method3() {
float a = (float) (1000 / 3.14);
}
}
btrace 脚本
/* BTrace Script Template */
import com.sun.btrace.annotations.*;
import static com.sun.btrace.BTraceUtils.*; @BTrace
public class TracingScript {
/* put your code here */
@TLS private static long startTime = 0; @OnMethod(
clazz="com.youku.data.test.kfktest.BtraceTest",
method="getret"
)
public static void startExecute(){
startTime = timeNanos();
} @OnMethod(
clazz="com.youku.data.test.kfktest.BtraceTest",
method="getret",
location=@Location(Kind.RETURN)
)
public static void traceExecute(@Duration long duration,@ProbeMethodName String pmn){
long time = timeNanos() - startTime;
println(strcat("duration(nanos): ", str(duration)));
println(strcat("execute time(nanos): ", str(time))); println(strcat("ProbeMethodName(pmn): ", str(pmn)));
}
}
package com.sun.btrace.samples; import com.sun.btrace.BTraceUtils;
import com.sun.btrace.Profiler;
import com.sun.btrace.annotations.*; @BTrace class Profiling {
@Property
Profiler swingProfiler = BTraceUtils.Profiling.newProfiler(); @OnMethod(clazz="com.youku.data.test.kfktest.BtraceTest", method="/.*/")
void entry(@ProbeMethodName(fqn=true) String probeMethod) {
BTraceUtils.Profiling.recordEntry(swingProfiler, probeMethod);
} @OnMethod(clazz="com.youku.data.test.kfktest.BtraceTest", method="/.*/", location=@Location(value=Kind.RETURN))
void exit(@ProbeMethodName(fqn=true) String probeMethod, @Duration long duration) {
BTraceUtils.Profiling.recordExit(swingProfiler, probeMethod, duration);
} @OnTimer(5000)
void timer() {
BTraceUtils.Profiling.printSnapshot("Swing performance profile", swingProfiler);
}
}
脚本启动命令
./bin/btrace <pid> /Users/dongxiaoyang/Desktop/<btracescript.java>
参考资料
3 使用jvisualvm.exe 的Btrace插件介绍/使用教程
btrace 笔记的更多相关文章
- btrace 实践笔记
btrace简介: btrace 是一个使用在JAVA平台上面的,安全的,动态跟踪工具.它一般用于动态跟踪正在运行的jAVA程序. 使用说明在这里.下载地址在这里. 下载的时候 ...
- BTrace使用小结
简介 BTrace是一个安全的JVM动态追踪工具,最初为原Sun公司Kenai项目下面的一个子项目. 典型的使用场景是,“我要查个问题,可那个方法没有打印入口参数和返回结果日志”,“我想看某个方法的执 ...
- git-简单流程(学习笔记)
这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...
- js学习笔记:webpack基础入门(一)
之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...
- SQL Server技术内幕笔记合集
SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...
- PHP-自定义模板-学习笔记
1. 开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2. 整体架构图 ...
- PHP-会员登录与注册例子解析-学习笔记
1.开始 最近开始学习李炎恢老师的<PHP第二季度视频>中的“章节5:使用OOP注册会员”,做一个学习笔记,通过绘制基本页面流程和UML类图,来对加深理解. 2.基本页面流程 3.通过UM ...
- NET Core-学习笔记(三)
这里将要和大家分享的是学习总结第三篇:首先感慨一下这周跟随netcore官网学习是遇到的一些问题: a.官网的英文版教程使用的部分nuget包和我当时安装的最新包版本不一致,所以没法按照教材上给出的列 ...
- springMVC学习笔记--知识点总结1
以下是学习springmvc框架时的笔记整理: 结果跳转方式 1.设置ModelAndView,根据view的名称,和视图渲染器跳转到指定的页面. 比如jsp的视图渲染器是如下配置的: <!-- ...
随机推荐
- The test form is only available for requests from the local machine 解决方法
protocolsdocumentationsoapweb 当您尝试从远程计算机访问 Web 服务时,不会显示“调用”按钮.并且,您会收到以下错误信息: The test form is only ...
- Laravel学习第一天(创建laravel项目、路由、视图、blade模板)
创建laravel项目 composer create-project laravel/laravel learnlv 4.1.* 查看帮助:composer create-project 使用 ...
- Boost.Build 简明教程
Boost.Build 简明教程 目录1. 介绍2. 构建过程3. 基本任务4. 项目管理5. 最佳实践6. 规则参考7. 特征参考 介绍 编译器和平台无关编译系统Boost.Build是一个高级编译 ...
- Intel项目Java小记
cannot be cast to javax.servlet.Filter添加provided即可 install -X是什么意思? Unsupported major.minor version ...
- RESTheart安装与设置
作者:Maurizio Turatti, 最后在Feb 25, 2016时被 Andrea Di Cesare更新 安装与设置 1. 快速开始 Docker Vagrant Bare metal 2. ...
- AirPlay简介
AirPlay是苹果公司在iOS4.2即Mac OS Mountain Lion中加入的一种播放技术.可以将iPhone.iPod.iPad和Mac上的视频镜像传送到支持AirPlay的设备上(如音响 ...
- UIWebView1-b
随着H5的强大,hybrid app已经成为当前互联网的大方向,单纯的native app和web app在某些方面显得就很劣势.关于H5的发展史,这里有一篇文章推荐给大家,今天我们来学习最基础的基于 ...
- IE filter & z-index bug
对最近遇到的2个问题的一点总结. 1.IE filter & z-index 重构后的首页即将上线,测试提出fix导航条扩展菜单在ie789滚动后一段无法显示的问题. 疑云重重: 这个问题一开 ...
- SQL Server强制删除复制发布
原文地址:http://blog.csdn.net/leamonjxl/article/details/7352208 SQL Server 中 存在以前(系统还原前)的发布内容,使用鼠标->右 ...
- 【原创】Matlab中plot函数全功能解析
[原创]Matlab中plot函数全功能解析 该帖由Matlab技术论(http://www.matlabsky.com)坛原创,更多精彩内容参见http://www.matlabsky.com 功能 ...