jConsole, jVisualvm, btrace 使用体会

jConsole(jdk1.5+)和jVisualvm(以下简称jVv)(jdk1.6+)是jdk携带的java监控工具,在JAVA_HOME/bin/即可找到。btrace是一款可以在运行时更改执行代码的工具,在jVisualvm中有插件。
(由于jVisualvm在oracle的维护中断,已经移到了github继续维护,btrace的插件也是让我一顿好找。在jVv的新主页:https://visualvm.github.io/上,点击plugins来到https://visualvm.github.io/pluginscenters.html,获取符合自己jdk版本的jVv插件源。)

jConsole

jConsole是可视化监控java进程的工具,集成了很多功能。从图中可见包括内存,线程,加载类,CPU,VM概要等。个人感觉优势点在于:1. 可以远程可视化监控服务器的java进程;2.可以观测堆的不同区块的占用空间量(优于jVv默认功能)。
但是相较于jVv,不能heapdump,当然也没有很多功能性插件。
p.s.关于监控:使用过的falcon可以接受程序上报数据,如果自动上报jvm使用和gc情况,就可以随时随地监控机器jvm状态。
如果没有这些监控工具,我个人也还是觉得jstat监控空间自由度高。远程服务器可以ssh登录进行监控。
这里写图片描述

jVisualvm

在jdk1.6及以上提供,号称是all-in-one工具。感觉jConsole的功能是jVv的子集(其实在jVv中就有jConsole的插件。。)。默认携带的功能包括监视CPU,堆的总占用,线程和加载类信息,heapdump等。也支持远程访问。安装插件可以变成多面手。

可能是由于使用不够熟练,个人习惯监视java的堆空间和gc时,还是习惯性使用jstat -gcutil pid time的方式,还可以留底,在发现内存有泄漏可能时使用jmap -histo:live 或者jmap -dump:format=b,file=a.bin pid用MAT分析。但是btrace真的6。

p.s. 关于profile:有了jVv的profile工具,至少不用买jProfile了。
profile对线上的服务可能有较大影响,不建议开启。但是google的lightweight-profiler据称对线上影响很小可以随意使用。http://blog.csdn.net/ligeforrent/article/details/74004359
由于jdk1.5以上默认开启的“类共享”可能会导致jVv的Profile功能监视的程序崩溃,所以如果想要使用jVv进行profile,需要使用-Xshare:off手动关闭此优化。

btrace

在jVv的插件库中,可以安装btrace插件。安装后,可以在程序运行的过程中,直接进行代码更改

图一,正在运行的程序
这里写图片描述

图二,用jVisualvm监控,并用bTrace插件植入代码
这里写图片描述

如图所示,正在运行的程序中有TimeKiller类的multiply方法。在通过jVisualvm进行监控过程中,直接用bTrace将打印返回值的代码植入,就可以在jVv中看到每次调用时执行的返回值,事实上还可以做很多事,如打印堆栈,参数;进行其他监视等。使用场景有很多,如不需要重启服务,就可以新增日志。非常6。更多功能详见google。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值