@com.sun.btrace.annotations.Export 该注解的静态属性主要用来与jvmstat计数器做关联. 使用该注解之后, btrace程序就可以向jvmstat客户端(可以用来统计jvm堆中的内存使用量)暴露trace程序的执行次数, 具体可参考例子ThreadCounter.java @com.sun.btrace.annotations.Property 使用了该注解的trace脚本将作为MBean的一个属性...
@BTrace // 备注1public class UrsInterfaceCalls{/*** 备注2* 本代码用于监控 CookieDecoder 中 requestDecode 方法的执行时间,如果执行时间大于 500ms,则打印花费的时间和堆栈* @param duration*/@OnMethod(clazz="com.netease.urs.CookieDecoder",method="requestDecode",location=@Location(Kind.RETURN)) // ...
Btrace 和 Greys 都比较适合对生成环境的问题进行排查,都属于“事后工具” ,即服务已经上线了,无法再通过打印日志等方式埋点分析。这时可以使用这些工具,来跟踪代码执行耗时、堆栈情况等。 原理 都是基于动态字节码修改技术(Hotswap)来实现运行时 java 程序的跟踪和替换。 利用了Java SE 6 新特性Instrumentation 。
选择合适的IDE: 使用集成开发环境(IDE)如Eclipse或IntelliJ IDEA可以极大地提高编写BTrace脚本的效率。这些IDE通常内置了对Java的支持,并提供了丰富的插件来辅助BTrace的开发工作。例如,你可以安装特定的BTrace插件来增强IDE的功能,使其更适合编写和调试BTrace脚本。 设置BTrace路径: 在IDE中正确设置BTrace的路径是非常重要...
BTrace基本介绍 Btrace是SUN公司开发的一款动态的Trace工具,是Java的安全可靠的动态跟踪工具。他的工作原理是通过instrument + asm来对正在运行的java程序中的class类进行动态增强。说他是安全可靠的,是因为它对正在运行的程序是只读的。也就是说,他可以插入跟踪语句来检测和分析运行中的程序,不允许对其进行修改。
beanshell可以查看内存数据 jvm信息可以通过jvm内置命令去获取 缺点 代码侵入式 不灵活 源代码冗余 如果你的服务不支持hotswap呢? 什么是btrace BTrace is a safe, dynamic tracing tool for the Java platform. BTrace can be used to dynamically trace a running Java program (similar to DTrace for OpenSolaris...
3.使用btrace工具,会占用一部分内存,如果当前程序内存空间已经不够用了,则不能使用,若强行使用,可能会导致java内存不足而从引起java虚拟机退出 4.通过实际测试,监控不能保证每次都正确监控到结果,而且有时可能会无法正常退出监控。这种方式只能作为定位线上问题的最后一招。
如果程序出现不正常的高内存负载、频繁无响应或内存溢出,通常最好的分析切入点是查看内存对象。幸好JVM内置了工具“jmap”,让它天生就能完成这种任务。 Jmap(借助JPM的一点帮助) Oracle将jmap描述为一种“输出进程、核心文件、远程调试服务器的共享对象内存映射和堆内存细节”的程序。本文将使用jmap打印一张内存统计图。
BTrace除了可以监控函数耗时外,还可以指定程序运行到某一行代码触发某一行为,定时触发行为,监控函数参数等等。 3、MAT内存分析工具 MAT是一款功能强大的Java堆内存分析器,可以用于查找内存泄露以及查看内存消耗情况,MAT的官方文档如下:http://help.eclipse.org/luna/index.jsp?topic=/org.eclipse.mat.ui.help/welcome...