【深入理解JAVA虚拟机】第二部分.内存自动管理机制.4.JVM工具

1、概述

工具作用:性能监控与故障处理

工作原理:分析数据

数据包含:运行日志、 异常堆栈、 GC日志、 线程快照(threaddump/javacore文件)、 堆转储快照(heapdump/hprof文件)等。

2、JDK命令行工具

JDK命令行是jdk/lib/tools.jar 的封装,所以都很小。

其他的工具,都是JDK命令行的封装。

 

jps:虚拟机进程状况工具(JVM Process StatusTool

jps 也就是 JVM里的 ps。

jstat:虚拟机统计信息监视工具 (JVM Statistics Monitoring Tool)

 是用于监视虚拟机各种运行状态信息的命令行工具。
它可以显示本地或者远程[1]虚拟机进程中的类装载、 内存、 垃圾收集、 JIT编译等运行数据 。

jinfoJava配置信息工具 (Configuration Info for Java

jinfo的作用是实时地查看和调整虚拟机各项参数。

jmapJava内存映像工具 (Memory Map for Java

jmap命令用于生成堆转储快照(一般称为heapdumpdump文件)。

jhat:虚拟机堆转储快照分析工具 JVM Heap Analysis Tool

jstackJava堆栈跟踪工具 Stack Trace for Java

用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件)。

HSDISJIT生成代码反汇编

 

 

 

3、JDK可视化工具

JConsoleJava监视与管理控制台
  
旧了
VisualVM:多合一故障处理工具 All-in-One Java Troubleshooting Tool

优点:

  1、基于JVM,不需要Agent

  2、支持插件 -- 可扩展

已有常用功能:

显示虚拟机进程以及进程的配置、 环境信息(jpsjinfo)。
监视应用程序的CPUGC、 堆、 方法区以及线程的信息(jstatjstack)。
dump以及分析堆转储快照(jmapjhat)。
方法级的程序运行性能分析,找出被调用最多、 运行时间最长的方法。
离线程序快照:收集程序的运行时配置、 线程dump、 内存dump等信息建立一个快照,可以将快照发送开发者处进行Bug反馈。 

一定支持热补丁的插件

  BTrace动态日志跟踪:

  在不停止目标程序运行的前提下,通过HotSpot虚拟机的HotSwap技术动态加入原本并不存在的调试代码。

  这项功能对实际生产中的程序很有意义:经常遇到程序出现问题,但排查错误的一些必要信息,譬如方法参数、 返回值等,在开发时并没有打印到日志之中,以至于不得不停掉服务,通过调试增量来加入日志代码以解决问题。

  BTrace的用法还有许多,打印调用堆栈、 参数、 返回值只是最基本的应用,在它的网站上有使用BTrace进行性能监视、 定位连接泄漏和内存泄漏、 解决多线程竞争问题等例子

 

4、其他工具

除了JDK自带的工具之外,常用的故障处理工具还有很多,如果读者使用的是非Sun系列的JDK、 非HotSpot的虚拟机,就需要使用对应的工具进行分析,如:

IBMSupport Assistant[1]Heap Analyzer [2]Javacore Analyzer [3]Garbage CollectorAnalyzer[4]适用于IBM J9 VM

HPHPjmeter[5]HPjtune适用于HP-UXSAPHotSpot VMEclipseMemory Analyzer Tool [6]MAT)适用于HP-UXSAPHotSpot VM,安装IBM DTFJ插件后可支持IBM J9 VM

BEAJRockit Mission Control[7]适用于JRockit VM

posted @ 2019-02-01 11:32  傲衣华少  阅读(191)  评论(0编辑  收藏  举报