JVM 性能监控与故障处理工具

作者: ulyssesss | 来源:发表于2018-04-12 12:23 被阅读7次

    JDK 中包含一些命令行工具,这些工具能在处理应用程序性能问题、定位故障时发挥很大的作用。

    jps

    JVM Process Status Tool,用于显示系统内所有的 HotSpot 虚拟机进程。

    jps 可以列出正在运行的 JVM 进程,显示 JVM 执行主类及进程的本地虚拟机唯一 ID(与操作系统进程 ID 一致)。

    常用选项:

    • -q:只输出进程 ID,隐藏主类名称
    • -m:输出进程启动时传递给主类 main() 函数的参数
    • -l:输出主类全名,如进程执行的是 Jar 包,输出 Jar 路径
    • -v:输出虚拟机进程启动时 JVM 参数

    jstat

    JVM Statistics Monitoring Tool,用于收集 HotSpot 各方面的运行数据。

    可以显示 JVM 进程中的类装载、内存、垃圾收集、JIT 编译等运行数据,格式为

    jstat option vmid [interval] [count]

    interval 参数为查询间隔,count 参数为查询次数,省略这两个参数则只查询一次。

    主要选项:

    • -class:监视类装载、卸载数量、总空间及耗时
    • -gc:监视 Java 堆状态,包括各个区的容量、已用空间、GC 时间合计等信息
    • -gccapacity:与 -gc 类似,更关注堆内各区使用到的最大、最小空间
    • -gcutil:与 -gc 类似,更关注已使用空间占比
    • -gccause:与 -gcutil 类似,额外输出上一次 GC 原因
    • -gcnew:监视新生代 GC 状况
    • -gcnewcapacity:与 -gcnew 类似,更关注使用到的最大、最小空间
    • -gcold:监视老年代 GC 状况
    • -gcoldcapacity:与 -gcold 类似,更关注使用到的最大、最小空间

    jinfo

    Configuration Info for Java,用于显示虚拟机配置信息,可以实时查看和调整虚拟机各项参数。

    jps -v 命令可以查看 JVM 启动时显示指定的参数列表,各项参数的默认值可以通过 jinfo 的 -flag 选项进行查询,还可以通过 -sysprops 选项打印出进程 System.getProperties() 的内容。

    jmap

    Memory Map for Java,用于生成 JVM 内存转储快照(heapdump文件)。命令格式 jmap [option] vmid ,主要选项:

    • -dump:生成 Java 堆转储快照
    • -head:显示 Java 堆详细信息
    • -histo:显示堆中对象的统计信息

    jhat

    JVM Heap Dump Browser,用于分析 heapdump 文件,建立 HTTP / HTML 服务器,可以在浏览器上查看分析结果。

    实际工作中一般不使用jhat 来分析 dump 文件,因为通常不会再服务器上直接分析 dump 文件,耗时且消耗资源,功能也相对简陋。

    jstack

    Stack Trace for Java,用于生成虚拟机线程快照,目的是定位线程出现长时间停顿的原因。常见参数:

    • -F:当正常输出的请求不被响应时,强制输出线程堆栈
    • -l:除堆栈外,显示关于锁的附加信息
    • -m:如调用本地方法,可以显示 C / C++ 的堆栈

    JConsole

    Java Monitoring and Management Console,基于 JMX 的可视化 Java 监视与管理控制台。

    Visual VM

    All-in-One Java Troubleshooting Tool,功能强大的运行监视和故障处理程序。不需要被监视程序基于特殊 Agent 运行,对程序的实际性能影响很小。

    查看原文

    相关文章

      网友评论

        本文标题:JVM 性能监控与故障处理工具

        本文链接:https://www.haomeiwen.com/subject/jjyxkftx.html