关闭 x
IT技术网
    技 采 号
    ITJS.cn - 技术改变世界
    • 实用工具
    • 菜鸟教程
    IT采购网 中国存储网 科技号 CIO智库

    IT技术网

    IT采购网
    • 首页
    • 行业资讯
    • 系统运维
      • 操作系统
        • Windows
        • Linux
        • Mac OS
      • 数据库
        • MySQL
        • Oracle
        • SQL Server
      • 网站建设
    • 人工智能
    • 半导体芯片
    • 笔记本电脑
    • 智能手机
    • 智能汽车
    • 编程语言
    IT技术网 - ITJS.CN
    首页 » JAVA »JVM 性能监控工具

    JVM 性能监控工具

    2015-06-13 00:00:00 出处:geeklu
    分享

    在 java 的 bin 目录下,jdk 提供了很多使用的工具,下面学习一些监控和故障处理的工具。

    名称 作用
    jps JVM process status tool,显示指定系统内所有的 HotSpot 虚拟机进程
    jstat JVM statistics monitoring tool,用于收集 HotSpot 虚拟机各方面的运行数据
    jinfo 显示虚拟机配置信息
    jmap 生产虚拟机的内存快照 dump 文件
    jhat 分析 dump 文件
    jstack 显示虚拟机的线程快照

    jps 虚拟机进程状况工具

    jps 的命令格式:

    jps [options] [hostid]

    >jps -l
    25330 sun.tools.jps.Jps
    25296
    
    >jps -lv
    25356 sun.tools.jps.Jps -Dapplication.home=/Library/Java/JavaVirtualMachines/jdk1.7.0_71.jdk/Contents/Home -Xms8m
    25296  -Dosgi.requiredJavaVersion=1.6 -XstartOnFirstThread -Dorg.Eclipse.swt.internal.carbon.smallFonts -XX:MaxPermSize=256m -Xms40m -Xmx512m -Xdock:icon=../Resources/Eclipse.icns -XstartOnFirstThread -Dorg.eclipse.swt.internal.carbon.smallFonts

    jps 可以查看通过 rmi 协议查询开启了 rmi 服务的原创虚拟机进程状态,hostid 是 rmi 注册表中注册的主机。

    jps 有如下主要的选项:

    选项 作用
    -q 只输出 LVMID,省略主类的名称
    -m 输出虚拟机启动时候传递给 main 方法的参数
    -l 输出类的全名
    -v 输出虚拟机进程启动时 JVM 参数

    jstat 虚拟机统计信息监视工具

    jstat 可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、 JIT 编译等运行数据。

    jstat 的命令格式:

    jstat [option vmid [interval] [count]]

    例如:

    >jstat -gcutil 25296 1000 5
      S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
      0.00  99.54  90.43  93.70  95.23     55    1.156     5    1.990    3.146
      0.00  99.54  90.43  93.70  95.23     55    1.156     5    1.990    3.146
      0.00  99.54  90.43  93.70  95.23     55    1.156     5    1.990    3.146
      0.00  99.54  90.43  93.70  95.23     55    1.156     5    1.990    3.146
      0.00  99.54  90.43  93.70  95.23     55    1.156     5    1.990    3.146

    查询 25296 进程的虚拟机状况,并且每隔 1000 毫秒一次,显示 5 次。

    看下主要选项的含义:

    选项 作用
    -class 监视类装载、卸载数量、总看见以及类装载消耗的时间
    -gc 监视 java 堆状况,包括 eden 区、两个 survivor 区、年老代、永久代等的容量、已用空间、gc 时间合计等
    -gccapacity 内容与 -gc 基本相同,输出主要关注 java 堆各个区使用到的最大、最小空间
    -gcutil 内容与 -gc 基本相同,关注已使用区域占总空间的百分比
    -gccause 内容与 -gcutil 一样,并且多输出导致上一次 gc 产生的原因
    -gcnew 监视新生代状况
    -gcnewcapacity 与 -gcnew 相同,主要关注使用到的最大、最小空间
    -compiler 输出 JIT 编译器编译过的方法、耗时等信息

    下面解读下 -gcutil 所产生的内容:

    S0、S1 分别代表了 Survivor0 和 Survivor1,E 代表 Eden 区,O 代表老年区, P 代表永久代。YGC 代表 Young GC 的次数,YGCT 代表时间,后面一样解释。

    jinfo 查看 java 配置信息工具

    这个命令比较简单,直接看自带的描述:

    Usage:
        jinfo [option] <pid>
            (to connect to running process)
        jinfo [option] <executable <core>
            (to connect to a core file)
        jinfo [option] [server_id@]<remote server IP or hostname>
            (to connect to remote debug server)
    
    where <option> is one of:
        -flag <name>         to print the value of the named VM flag
        -flag [+|-]<name>    to enable or disable the named VM flag
        -flag <name>=<value> to set the named VM flag to the given value
        -flags               to print VM flags
        -sysprops            to print Java system properties
        <no option>          to print both of the above
        -h | -help           to print this help message

    jmap 生产 java 内存 dump

    jmap 除了可以生成 dump 文件外,还可以查询 finalize 执行队列,java 堆和永久代的详细信息,如空间使用率和当前用的是哪种收集器等。

    具体的 jamp 如何操作部多介绍,看下面提供的说明,比较简单:

    Usage:
        jmap [option] <pid>
            (to connect to running process)
        jmap [option] <executable <core>
            (to connect to a core file)
        jmap [option] [server_id@]<remote server IP or hostname>
            (to connect to remote debug server)
    
    where <option> is one of:
        <none>               to print same info as Solaris pmap
        -heap                to print java heap summary
        -histo[:live]        to print histogram of java object heap; if the "live"
                             suboption is specified, only count live objects
        -permstat            to print permanent generation statistics
        -finalizerinfo       to print information on objects awaiting finalization
        -dump:<dump-options> to dump java heap in hprof binary format
                             dump-options:
                               live         dump only live objects; if not specified,
                                            all objects in the heap are dumped.
                               format=b     binary format
                               file=<file>  dump heap to <file>
                             Example: jmap -dump:live,format=b,file=heap.bin <pid>
        -F                   force. Use with -dump:<dump-options> <pid> or -histo
                             to force a heap dump or histogram when <pid> does not
                             respond. The "live" suboption is not supported
                             in this mode.
        -h | -help           to print this help message
        -J<flag>             to pass <flag> directly to the runtime system

    jhat 虚拟机堆快照分析工具

    我们可以使用 jhat 来分析 jmap 生成的 dump 文件

    >jhat tmp.dump
    Reading from tmp.dump...
    Dump file created Sat May 09 17:10:52 CST 2015
    Snapshot read, resolving...
    Resolving 0 objects...
    WARNING:  hprof file does not include java.lang.Class!
    WARNING:  hprof file does not include java.lang.String!
    WARNING:  hprof file does not include java.lang.ClassLoader!
    Chasing references, expect 0 dots
    Eliminating duplicate references
    Snapshot resolved.
    Started HTTP server on port 7000
    Server is ready.

    默认会开 7000 端口进行 web 访问。一般不使用这个命令来分析,会使用专业的工具来分析 dump 文件,如 eclipse memory analyzer 等。

    jstack 分析 java 堆栈

    jstack 用来生成当前时刻线程快照。

    使用方式如下:

    Usage:
        jstack [-l] <pid>
            (to connect to running process)
        jstack -F [-m] [-l] <pid>
            (to connect to a hung process)
        jstack [-m] [-l] <executable> <core>
            (to connect to a core file)
        jstack [-m] [-l] [server_id@]<remote server IP or hostname>
            (to connect to a remote debug server)
    
    Options:
        -F  to force a thread dump. Use when jstack <pid> does not respond (process is hung)
        -m  to print both java and native frames (mixed mode)
        -l  long listing. Prints additional information about locks
        -h or -help to print this help message

    【参考资料】

    深入理解 JAVA 虚拟机
    上一篇返回首页 下一篇

    声明: 此文观点不代表本站立场;转载务必保留本文链接;版权疑问请联系我们。

    别人在看

    Destoon 模板存放规则及语法参考

    Destoon系统常量与变量

    Destoon系统目录文件结构说明

    Destoon 系统安装指南

    Destoon会员公司主页模板风格添加方法

    Destoon 二次开发入门

    Microsoft 将于 2026 年 10 月终止对 Windows 11 SE 的支持

    Windows 11 存储感知如何设置?了解Windows 11 存储感知开启的好处

    Windows 11 24H2 更新灾难:系统升级了,SSD固态盘不见了...

    小米路由器买哪款?Miwifi热门路由器型号对比分析

    IT头条

    Synology 对 Office 套件进行重大 AI 更新,增强私有云的生产力和安全性

    01:43

    StorONE 的高效平台将 Storage Guardian 数据中心占用空间减少 80%

    11:03

    年赚千亿的印度能源巨头Nayara 云服务瘫痪,被微软卡了一下脖子

    12:54

    国产6nm GPU新突破!砺算科技官宣:自研TrueGPU架构7月26日发布

    01:57

    公安部:我国在售汽车搭载的“智驾”系统都不具备“自动驾驶”功能

    02:03

    技术热点

    最全面的前端开发指南

    Windows7任务栏桌面下角的一些正在运行的图标不见了

    sql server快速删除记录方法

    SQL Server 7移动数据的6种方法

    SQL Server 2008的新压缩特性

    每个Java程序员必须知道的5个JVM命令行标志

      友情链接:
    • IT采购网
    • 科技号
    • 中国存储网
    • 存储网
    • 半导体联盟
    • 医疗软件网
    • 软件中国
    • ITbrand
    • 采购中国
    • CIO智库
    • 考研题库
    • 法务网
    • AI工具网
    • 电子芯片网
    • 安全库
    • 隐私保护
    • 版权申明
    • 联系我们
    IT技术网 版权所有 © 2020-2025,京ICP备14047533号-20,Power by OK设计网

    在上方输入关键词后,回车键 开始搜索。Esc键 取消该搜索窗口。