JVM 性能监控及故障处理工具[1.8]

性能监控及故障处理工具[1.8]

  • jps
    • JVM Process Status Tool,显示指定系统内所有的HotSpot虚拟机进程
    • 默认显示正在运行的虚拟机进程:本地虚拟机唯一ID(LVMID)和执行主类
    • jps [-help]
      • help : 获取帮助列表
    • jps [-q] [-mlvV] [<hostid>]
      • q : 只输出LVMID,省略主类
      • m : 输出启动时,传递给主类main()函数的参数
      • l :输出主类的全名。如果执行的是jar,则输出jar全路径
      • v :JVM参数
      • V:输出通过flag文件传递到JVM中的参数(.hotspotrc文件或-XX:Flags=所指定的文件 
      • <hostid>:      <hostname>[:<port>] 查看远程主机的进程
  • jstat
    • JVM Statistics Monitoring Tool,用于监视虚拟机各方面的运行数据
    • 可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据
    • jstat -help|-options
      • help : 获取帮助
      • options :获取作用参数列表
    • jstat -<option> [-t] [-h<lines>] <vmid> [<interval>[s|ms] [<count>]]
      • t : 第一列显示时间戳,从jvm启动开始
      • h<lines> : 每隔多少行显示表头
      • vmid : 若是本地虚拟机,则就是lvmid远程主机,则[protocol:][//]vmid[@hostname[:port]/serverName]
      • interval:每隔指定时间输出一次,默认单位为ms,可以指定为s
      • count :共输出多少次
      • option
        • class :监视类装载、卸载数量、总空间以及类装载耗费时间
          • 示例

          • 解析

        • compiler:输出JIT编译过的方法、耗时等信息
          • 示例

          • 解析

        • gc :监视Java堆情况
          • 示例

        • gccapacity :监视内容与gc相同,主要关注各个区域使用到的最大、最小空间
          • 示例

          • 解析

        • gcutil : 与gc基本相容,主要关注已使用空间占总空间的百分比
        • gccause:与gcutil功能一致,额外输出上一次gc的原因
        • gcnew : 监视新生代Gc情况
        • gcnewcapacity : 与gcnew基本相同,主要关注内存使用情况
        • gcold: 监视老年代Gc情况
        • gcoldcapacity : 与gcold基本相同,主要关注内存使用情况
        • gcmetacapacity:监视元数据的内存使用情况
        • printcompilation :JIT编译方法统计
          • 示例

          • 解析

            扫描二维码关注公众号,回复: 10948074 查看本文章
  • jinfo
    • Configuration Info for Java,实时查看和调整虚拟机参数
  • jmap
    • Memory Map for Java,生成虚拟机的内存转储快照(headdump文件)
    • 其他拿到dump文件的方法
      • -XX:HeadDumpOnOutOfMemoryError 出现OOM异常后自动生成
      • -XX:HeapDumpONCtrlBreak 使用Ctrl + Break键促使生成
      • linux环境下,发送kill -3 生成
      •  
    • 除-dump与-histo参数是平台通用外,其他参数只在linux和Solaris使用

  • jhat
    • JVM Heap Dump Browser,用于分析headdump文件,会建立一个http/html服务器,让用户在浏览器上查看分析结构
    • 一般不会直接使用jhat,一是耗时耗资源,二是功能比较粗糙

  • jstack
    • Stack Trace for Java,显示虚拟机的线程快照
    • 线程快照就是当前虚拟机内每一条线程正在执行的方法堆栈的集合
    • 生成快照的目的是定位线程出现长时间停顿的原因.
  • HSDIS
    • JIT生成代码反汇编插件
    • -XX:+PrintAssembly 把动态生成的本地代码还原为汇编代码输出,并生成注释
  • JConsole
    • jconsole命令或jdk/bin的jconsole.exe
    • 内存监控(内存):相当于可视化的jstat命令
    • 线程监控(线程):可视化的jstack命令
  • JVisualVM
    • 显示虚拟机进程以及进程的配置、环境信息(jps、jinfo)
    • 监视应用程序的CPU、GC、堆、方法区以及线程的信息(jstat、jstack)
    • dump以及分析dump(jmap、jhat)
    • 方法级的程序运行性能分析
    • 离线程序快照
    • 其他plugin
      • BTrace:在不停止目标程序运行的前提下,通过HotSpot虚拟机的HotSpot技术动态加入原本不存在的调试代码。
发布了24 篇原创文章 · 获赞 0 · 访问量 103

猜你喜欢

转载自blog.csdn.net/jiangxiayouyu/article/details/105614193