虚拟机性能监控与故障处理工具

技术交流学习或者有任何问题欢迎加群 : 154514123 爱上编程

【0】README
0.1)本文文字描述转自 “深入理解jvm”,旨在了解 虚拟机性能监控与故障处理工具的基础知识(仅仅在于了解);

【1】概述
1)给一个系统定位问题的时候,知识,经验是关键基础,数据是依据,工具是运用知识处理数据的手段。这里说的数据包括:运行日志,异常堆栈,GC日志,线程快照,堆转储快照等;
2)JDK的命令行工具:jdk 的bin 目录是jdk的工具目录,这些命令行工具大多数是 jdk/lib/tools.jar 类库的一层薄包装而已,它们主要的功能代码是在 tools 类库中实现的;

3)Sun JDK 监控和故障处理工具


3.1)jps:虚拟机进程状况工具(jps==jvm process status tool),它可以列出正在运行的虚拟机进程,并显示虚拟机执行主类名称以及这些进程的本地虚拟机唯一ID;


3.2)jstat:虚拟机统计信息监视工具(jstat==jvm statistics monitoring tool),用于监视虚拟机各种运行状态信息的命令行工具。他可以显示本地或者远程虚拟机进程中的类装载,内存,垃圾收集,JIT编译等运行数据,在没有GUI的时候,它是运行期定位虚拟机性能问题的首选工具;
  • 3.2.1)命令格式: jstat [option vmid [interval [s|ms] [count]] ]
  • 3.2.2)参数interval 和 count 表示查询间隔 和 次数,如果省略这两个参数,说明只查询一次。如需要每250ms 查询一次进程 2764 垃圾收集状况,一共查询20次,命名应该是: jstat -gc 2764 250 20


3.3)jinfo:java配置信息工具
  • 3.3.1)jinfo的作用: 是实时地查看和调整虚拟机各项参数。使用jps命令的-v 参数可以查看jvm启动时显式指定的参数列表,但如果想知道未被显式指定的参数的系统默认值,就只能使用 jinfo的-flag 选项进行查询了;jinfo还可以使用 -sysprops 选项把jvm 进程的 System.getProperties()的内容打印出来;

3.4)jmap:java内存映像工具(memory map for java):
  • 3.4.1)该命令用于生成堆转储快照(一般称为 heapdump 或 dump文件)。
  • 3.4.2)jmap的作用并不仅仅是为了获取dump文件,它还可以查询 finalize 执行队列,java堆和永久代的详细信息;
  • 3.4.3)jmap 工具主要选项

3.4)jstack:java堆栈跟踪工具(stack trace for java):该命令用于生成jvm 当前时刻的线程快照(一般称为 threaddump 或 javacore 文件)。
  • 3.4.1)线程快照就是当前jvm 内每一条线程正在执行的方法堆栈的集合,生成线程快照的目的是 定位线程出现长时间停顿的原因,如线程间死锁,死循环,请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因;
  • 3.4.2)jstack命令格式:jstack [option] vimd
  • 3.4.3)jstack 工具主要选项


3.5)HDDIS:JIT 生成代码反汇编
1)problem:分析程序如何执行,通过软件调试工具(GDB,Winbg)来断点调试是最常见的手段,但这样的调试方式在jvm 中会遇到很大的麻烦,因为大量执行代码是通过JIT编译器动态生成到 CodeBuffer中的,没有很简单的手段来处理这种混合模式的调试。
2)solution:HSDIS是一个Sun官方推荐的HotSpot 虚拟机JIT编译代码的反汇编插件,它包含在HotSpot虚拟机的源码之中,但没有提供编译后的程序。在 project henai 的网站可以下载到源码;

4)JDK的可视化工具
1)JConsole:java监视与管理控制台
2)visualVM:多合一故障处理工具
原文地址:https://www.cnblogs.com/jobs-lgy/p/6360305.html