JVM之性能监控与故障处理工具
来源:互联网 发布:jsp页面显示数据库 编辑:程序博客网 时间:2024/05/17 13:09
第四章 性能监控与故障处理工具
4.1 JDK命令行工具
- jps (JVM Process Status Tool):虚拟机进程状况工具,可列出正在运行的虚拟机进程,并显示虚拟机主类(Main Class,main()函数所在的类)的名称,以及这些进程的本地虚拟机的唯一ID(LVMID,Local Virtual Machine Identifier),对于本地虚拟机进程来说,LVMID与操作系统的进程ID(PID, Process Identifier)一致。jps可通过RMI协议查询开启了RMI服务的远程虚拟机进程状态,hostid为RMI注册表中注册的主机名。
常用选项如下表:
- jstat(JVM Statistics Monitoring Tool):虚拟机统计信息监视工具,用于监视虚拟机各种运行状态信息,可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据,它是在没有GUI图形界面的服务器上运行期定位虚拟机性能问题的首选工具。
jstat命令行格式:jstat [ option vmid [ interval [s | ms ] [ count ] ] ]
常用选项如下表:
说明:命令行中VMID与LVMID在本地虚拟机进程中是一致的,若为远程虚拟机,则VMID的格式为:[protocol]:[//]vmid[@hostname][:port]/[servername],参数
interval和count代表查询间隔和次数,若省略,则查询一次,如每250ms查询一次进程2764垃圾收集情况,共查询20次,命令为:jstat -gc 2764 250 20
- jinfo(Configuration Info for Java):Java配置信息工具,用于实时地查看和调整虚拟机的各项参数。jinfo的Option参数有:-flags(显示参数的系统默认值)、-sysprops(打印虚拟机进程的System.getProperties()的内容)。
jinfo命令格式为:jinfo [ option ] pid
- jmap(Memory Map for Java):Java内存映像工具,用于生成堆转储快照(一般称为heapdump或dump文件),也可使用-XX:+HeapDumpOnOutOfMemoryError参数在虚拟机出现OOM异常后自动生成dump文件,通过-XX:+HeapDumpOnCtrlBreak参数则可使用Ctrl+Break键让虚拟机生成dump文件。另外,jmap还可查询finalize执行队列、Java堆和永久代的详细信息,如空间利用率、当前使用的收集器类型等。
jmap命令格式为:jmap [ option ] vmid
option选项的值如下表:
- jhat(JVM Heap Analysis Tool):虚拟机堆转储快照分析工具, 用于与jmap命令搭配来分析jmap生成的堆转储快照。jhat内置一个微型的HTTP/HTML服务器,生成dump文件后可用浏览器查看。如jhat test.bin,其中test.bin是用jmap命令生成的dump文件。
- jstack(Stack Trace for Java):Java堆栈跟踪工具,用于生成虚拟机当前时刻的线程快照(一般称为threaddump或javacore文件),其目的是定位线程出现长时间停顿的原因,如线程间死锁、死循环等。
jstack命令格式为:jstack [ option ] vmid
option选项的值如下表:
4.2 JDK的可视化工具
- JConsole(Java Monitoring and Management Console):Java监视与管理控制台,是一款基于JMX的可视化监视和管理工具。
1 ) 启动JConsole:通过JDK/bin目录下的"jconsole.exe"启动,启动后将自动搜索出本机运行的所有虚拟机进程;
2 ) 内存监控:"内存"标签相当于jstat命令,用于监视收集器管理的虚拟机内存(Java堆和永久代)的变化趋势,如下实例代码用于体验其监视功能:
/** * VM参数: -verbose:gc - Xms100M -Xmx100M * -XX:+UseSerialGC */ public class Test{ public static void main(String[] args) throws Throwable { fillHeap(10000); } static class OOMObject{ public byte [] object = new byte [1024]; } public static void fillHeap (int num) throws Exception{ List<OOMObject> list = new ArrayList<OOMObject>(num); for(int i = 0; i < num; i++){ // 稍作延迟,使监视曲线变化更明显 Thread. sleep(50); list.add( new OOMObject()); } System. gc(); } }
3 ) 线程监控:相当于可视化的jstack命令,遇到线程停顿时可使用它进行监控分析;
- VisualVM(All-in-one Java Troubleshooting Tool):多合一故障处理器,提供运行监视、故障处理、性能分析,它不需要被监视的程序基于特殊的Agent运行,对应用程序的实际性能影响很小,使得它可以直接应用在生产环境中。
核心内容出处:《深入理解Java虚拟机:JVM高级特性与最佳实践》
0 0
- JVM之性能监控与故障处理工具
- JVM读书笔记之性能监控与故障处理工具
- JVM性能监控与故障处理工具
- JVM性能监控与故障处理工具
- JVM性能监控与故障处理工具
- 【JVM】JVM性能监控与故障处理工具
- JVM虚拟机性能监控与故障处理工具
- 【008】【JVM——性能监控与故障处理工具】
- JVM学习笔记--虚拟机性能监控与故障处理工具
- jvm(4)-虚拟机性能监控与故障处理工具
- jvm笔记3--性能监控与故障处理工具
- jvm笔记03:虚拟机性能监控与故障处理工具
- JVM初窥:虚拟机性能监控与故障处理工具
- JVM性能监控及故障处理工具
- JVM性能监控和故障处理工具
- 03. JVM性能监控&故障处理工具
- JAVA内存系列五之JVM性能监控与故障处理工具
- 深入理解JVM之虚拟机性能监控与故障处理工具
- oracle中WMSYS.WM_CONCAT函数的版本差异
- 题目列表(图论)
- php 回调函数(callback)
- SAP生产流水号
- Smarty的配置与高级缓存技术
- JVM之性能监控与故障处理工具
- Cube Stacking
- smart-json的简单使用(一)
- Android提高第二篇之SurfaceView的基本使用
- Swift 的类、结构体、枚举等的构造过程Initialization(上)
- 剖析RedHat Linux中三个重要内核文件
- 工业超纯水机:超纯水机应用特点及选型的条件选择详情
- Android提高第三篇之SurfaceView与多线程的混搭
- 八月第一天