JVM监控工具的作用
- 对jvm运行期间的内部情况进行监控,比如:对jvm参数,cpu,内存,堆等信息的查看
- 辅助进行性能调优
- 辅助解决应用运行时的一些问题,比如:OutOfMemoryError,内存泄漏,线程死锁,锁争用,Java进程消耗CPU过高等等
命令行工具
jps
- jps(JVM Process Status Tool):主要用来输出JVM中运行的进程状态信息,语法格式如下:jps[options][hostid]
- hostid字符串的语法与URI的语法基本一致:[protocol:][[//]hostname][:port][/servername],如果不指定hostid,默认为当前主机或服务器
jinfo
- 打印给定进程或核心文件或远程调试服务器的配置信息。语法格式:jinfo[option] pid #指定进程号(pid)的进程
- jinfo[option]
#指定核心文件 - jinfo[option][server-id@]
#指定远程调式服务器
jstack
- jstack主要用来查看某个Java进程内的线程堆栈信息。语法格式如下:jstack [option] pid
- jstack [option] executable core
- jstack [option] [server -id@]remote-hostname-or-ip
jmap
- jmap用来查看堆内存使用情况,语法格式如下:jmap[option] pid
- jmap [option] executable core
- jmap [option] [server -id@]remote-hostname-or-ip
jstat
- JVM统计监测工具,查看各个区内存的GC的情况
- 语法格式如下:jstat[generalOption | outputOptions vmid [interval[s|ms][count]]]
jstated
- 虚拟机的jstat守护进程,主要用于监控JVM的创建与终止,并提供一个接口,以允许远程监视工具附加到本地系统上允许的JVM
- 语法格式:jstated [options]
jcmd
- JVM诊断命令工具,将诊断命令请求发送到正在允许的Java虚拟机,比如可以用来导出堆,查看java进程,导出线程信息,执行GC等
图形化工具
jconsole
- 一个用于监视Java虚拟机的符合JMX的图形工具。它可以监视本地和远程JVM,还可以监视和管理应用程序
jmc
- jmc(JDK Mission Control) Java任务控制(JMC)客户端包括用于监视和管理Java应用程序的工具,而不会引入通常与这些类型的工具相关联的性能开销
VisualVM
- 一个图形工具,它提供有关在Java虚拟机中运行的基于Java技术的应用程序的详细信息
- Java VisualVM提供内存的CPU分析,堆转储分析,内存泄漏检测,访问MBean和垃圾回收。
两种远程的连接方式
- JMX连接可以查看:系统信息,CPU使用情况,线程多少,手动执行垃圾回收等比较偏于系统级层面的信息
- jstatd连接方式可以提供:JVM内存分布详细信息,垃圾回收分布图,线程详细信息,甚至可以看到某个对象使用内存的大小