1. JHSDB:基于服务性代理的调试工具
JHSDB是一款基于服务性代理实现的进程外调试工具。
服务性代理是HotSpot虚拟机中一组用于映射Java虚拟机运行信息的、主要基于Java语言实现的API集合。
2. JConsole:Java监视与管理控制台
JConsole是一款基于JMX的可视化监视、管理工具。
主要功能:通过JMX的M Bean (M anaged Bean) 对系统进行信息收集和参数动态调整。JMX是一种开放性的技术,不仅可以用在虚拟机本身的管理上,还可以运行于虚拟机上的软件中,典型的如中间件大多也基于JMX来实现管理与监控。虚拟机对JMX。
2.1. 开启方式
2.2. 内存监控
2.3. 线程监控
可以检测死锁
3. VisualVM:多合-故障处理工具
VisuaIVM ( All-in-One Java Troubleshooting Tool)是功能最强大的运行监视和故障处理程序之一,曾经在很长一段时间内是Oracle官方主力发展的虚拟机故障处理工具。VisualVM还有一个很大的优点:不需要被监视的程序基于特殊Agent去运行,因此它的通用性很强,对应用程序实际性能的影响也较小,使得它可以直接应用在生产环境中。这个优点是JProfiler、YourKit等 工具无法与之媲美的。
功能:
-
显示虚拟机进程以及进程的配置、环境信息(jps、 jinfo) 。
-
监视应用程序的处理器、垃圾收集、堆、方法区以及线程的信息(jstat、 jstack) 。
-
dump以及分析堆转储快照(jmap、 jhat )。
-
方法级的程序运行性能分析,找出被调用最多、运行时间最长的方法。
-
离线程序快照:收集程序的运行时配置、线程dump、内存dump等信息建立一个快照,可以将快照发送开发者处进行Bug反馈。
-
其他插件带来的无限可能性。
分析程序性能
使用profile来进行分析。
BTrace
BTrace是一个很神奇的VisualVM插件,它本身也是一个可运行的独立程序。BTrace的作用是在不中断目标程序运行的前提下,通过HotSpot 虚拟机的Instrument功能[4动态加入原本并不存在的调试代码。这项功能对实际生产中的程序很有意义:如当程序出现问题时,排查错误的-些必要信息时(譬如方法参数、返回值等),在开发时并没有打印到日志之中以至于不得不停掉服务时,都可以通 过调试增量来加入日志代码以解决问题。