在 Java 应用性能分析与故障诊断领域,工具生态丰富多样。从动态追踪工具如 Btrace、Arthas 的 retransform 能力,到 JDB 调试,再到 JDK 内置的 VisualVM、JFR,以及 JProfiler、MAT 等性能分析工具,还有分布式监控工具、火焰图等,它们共同助力开发者高效定位问题、优化系统性能。
BTrace的 wiki:
https://github.com/btraceio/btrace/wiki
例子
测试代码

btrace程序

启动 btrace

也可以用 arthas 实现 将 OrderProcessor 内容改一下:

重新编译一下,然后 arthas retransform 加载:

可以用 jad 反编译检查一下
再看原先的程序,打印的内容变了

官网的一些例子:
· https://github.com/btraceio/btrace/tree/master/btrace-dist/src/main/resources/samples

对比一下
· arthas 使用了:Instrumentation.retransformClasses(),会替换整个类,风险高
· btrace 使用了:java.lang.instrument,只是在关键函数中注入了额外信息,风险低
----------------------------------------
jdb 的一个例子
编译的时候需要加 -g

使用 jdb 跟踪

进入之后,输入 help,会列出所有调试命令
打断点做调试

其他一些分析工具
分布式监控
-
Prometheus
-
Grafana
-
ELK Stack
-
Zipkin
-
Jaeger
Arthas
-
monitor、watch、trace 等很好用的工具
-
还有 jad、dashborad、getstatic、ognl
-
profiler 记录火焰图
-
jfr,jfr 记录
JDK 内置工具
-
jstack、jinfo、jps、jmap
-
jstat、jconsole、jcmd、jhat
-
jdb
-
Mission Control
监控工具
-
visualvm
-
JFR
-
YourKit
-
JProfiler
-
Async Profiler
内存 dump分析
-
Elicpse MAT
-
NetBeans Profiler
APM 工具
-
New Relic
-
AppDynamics
-
Datadog APM
其他
-
strace
-
Perf (Linux) + async-profiler
参考
-
btrace github
-
btrace-learning
-
通过jdb命令连接远程调试的方法
-
btrace使用入门
1108

被折叠的 条评论
为什么被折叠?



