深入理解Java虚拟机 虚拟机性能监控与故障处理工具总结

JDK的命令行工具

1.jps:虚拟机进程状况工具
可以列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class,main()函数所在的类)名称以及这些进程的本地虚拟机唯一ID(Local Virtual Machine Identifier LVMID)

2.jstat:虚拟机统计信息监视工具
jstat(JVM Statistics Monitoring Tool)是用于监视虚拟机各种运行状态信息的命令行工具 它可以显示本地或者远程虚拟机进程中的类装载 内存 垃圾收集 JIT编译等运行数据 在没有GUI图形界面 只提供了纯文本控制台环境的服务器上 它将是运行期定位虚拟机性能问题的首选工具

3.jinfo:Java配置信息工具
jinfo(Configuration Info for Java)的作用是实时地查看和调整虚拟机各项参数

4.jmap:Java内存映像工具
jmap(Memory Map for Java)命令用于生成堆转储快照(一般称为heapdump或dump文件)

5.jhat:虚拟机堆转储快照分析工具
Sun JDK提供jhat(JVM Heap Analysis Tool)命令与jmap搭配使用 来分析jmap生成的堆转储快照 jhat内置了一个微型的HTTP/HTML服务器 生成dump文件的分析结果后 可以在浏览器中查看

6.jstack:Java堆栈跟踪工具
jstack(Stack Trace for Java)命令用于生成虚拟机当前时刻的线程快照(一般称为threaddump或者javacore文件) 线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合 生成线程快照的主要目的是定位线程出现长时间停顿的原因 如线程间死锁 死循环 请求外部资源导致的长时间等待等都是导致线程长时间停顿的常见原因 线程出现停顿的时候通过jstack来查看各个线程的调用堆栈 就可以知道没有响应的线程到底在后台做些什么事情 或者等待着什么资源

在JDK 1.5中 java.lang.Thread类新增了一个getAllStackTraces()方法用于获取虚拟机中所有线程的StackTraceElement对象 使用这个方法可以通过简单的几行代码就完成jstack的大部分功能 在实际项目中不妨调用这个方法做个管理员页面 可以随时使用浏览器来查看线程堆栈

<%@ page import="java.util.Map"%>

<html>
<head>
<title>服务器线程信息</title>
</head>
<body>
<pre>
<%
    for (Map.Entry<Thread, StackTraceElement[]> stackTrace : Thread.getAllStackTraces().entrySet()) {
        Thread thread = (Thread) stackTrace.getKey();
        StackTraceElement[] stack = (StackTraceElement[]) stackTrace.getValue();
        if (thread.equals(Thread.currentThread())) {
            continue;
        }
        out.print("\n线程:" + thread.getName() + "\n");
        for (StackTraceElement element : stack) {
            out.print("\t"+element+"\n");
        }
    }
%>
</pre>
</body>
</html>

7.HSDIS:JIT生成代码反汇编
HSDIS是一个Sun官方推荐的HotSpot虚拟机JIT编译代码的反汇编插件

JDK的可视化工具

1.JConsole:Java监视与管理控制台
JConsole(Java Monitoring and Management Console)是一种基于JMX的可视化监视 管理工具 它管理部分的功能是针对JMX MBean进行管理 MBean可以使用代码 中间件服务器的管理控制台或者所有符合JMX规范的软件进行访问

2.VisualVM:多合一故障处理工具
VisualVM(All-in-One Java Troubleshooting Tool)是到目前为止随JDK发布的功能最强大的运行监视和故障处理程序 并且可以预见在未来一段时间内都是官方主力发展的虚拟机故障处理工具 官方在VisualVM的软件说明中写上了“All-in-One”的描述字样 预示着它除了运行监视 故障处理外 还提供了很多其他方面的功能 如性能分析(Profiling) VisualVM的性能分析功能甚至比起JProfiler YourKit等专业且收费的Profiling工具都不会逊色多少 而且VisualVM的还有一个很大的优点:不需要被监视的程序基于特殊Agent运行 因此它对应用程序的实际性能的影响很小 使得它可以直接应用在生产环境中 这个优点是JProfiler YourKit等工具无法与之媲美的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值