JVM读书笔记之性能监控与故障处理工具

12 篇文章 0 订阅

一. JVM数据

      JVM中的数据包括:运行日志,异常堆栈,GC日志,线程快照(threaddump/javacore文件),堆转储快照(headdump/hprof文件)。

二. JDK的命令行工具

      JDK bin目录下的有许多命令行工具,比如java.exe与javac.exe。Sun公司也提供了对JVM监控和故障处理的工具。

三. 工具详解

      1.JVM Process Status Tool(jps)
         列出正在运行的虚拟机进程,并显示虚拟机执行主类(Main Class)的名称,以及这些进程在本地虚拟机的唯一ID(LVMID,Local Virtual Machine Identifier)。

选项作用
Jps -q只输出LVMID,缺省主类名称
-m输出虚拟机进程启动时传给主类Main函数的参数
-l输出主类的全名
-v输出虚拟机进程启动时JVM参数
      2.JVM Statistics Monitoring Tool (jstat)
          用于监视虚拟机各种运行状态信息的命令行工具,可以显示本地或远程虚拟机进程中的类装载、内存、垃圾回收、JIT编译等运行数据。是虚拟机运行期定位虚拟机性能问题的首选工具。
          Jstat的命令格式为:jstat -[<option> <vmid> [<interval> [<count>]]。
  • vmid如果是本地虚拟机进程,则VMID与LVMID一致;如果是远程虚拟机进程,VMID格式为:[protocol:] [//] lvmid[@localhost[;port]/servername]
  • Interval:代表查询间隔
  • Count:代表查询次数
  • Option:代表用户希望查询的虚拟机信息,主要分为3类:类装载,GC,运行期编译情况。
                                                    option选项

选项作用
-class监视类装载,卸载数量,总空间以及类装载所耗费时间
-gc监视java堆的情况,包括Eden区,两个survivor区,老年代,永久代,已用空间等信息
-gccapacity监视内容与gc基本相同,但主要输出Java堆各个区域用到的最大空间和最小空间
-gcutil监视内容与gc基本相同,但主要关注已用空间占总空间百分比
-gccause与-gcutil功能一样,但是会额外输出上次GC产生原因
-gcnew监视新生代GC
-gcnewcapacity监视内容与-gcnew相同,输出主要关注使用到的最大空间与最小空间
-gcold监视老年代GC
-gcoldcapacity监视内容与-gcold相同,输出主要关注使用到的最大空间与最小空间
-gcpermcapacity输出永久代使用到的最大空间和最小空间
-compiler输出JIT编译器编译过的方法,耗时等信息。
-printcompilation输出已经被JIT编译的方法

        3.Configuration Info for Java(Jinfo)
            实时查看和调整虚拟机的各项参数。jps -v虚拟机启动时显式指定的参数列表,Jinfo参数的命令格式:jinfo [option] pid;

选项作用
-flag未被显式指定的参数的系统默认值
-sysprops把虚拟机进程的System.getProperties( )的内容打印出来
-flag name=value修改一部分运行期可写的虚拟机参数值

        4.Memory Map for java(Jmap)
           用于生成堆转储快照(一般称为heapdump或dump文件)以及查询finalize执行队列,Java堆和永久代的详细信息,如空间使用率,GC器等。Jmap的命令格式:jmap [option] pid。
                                          option选项如下

选项作用
-dump生成Java堆转储快照,格式为-dump:[live,]format=b,file=<filename>,live参数说明是否只dump出存货对象
-finalizerinfo显式在F-Queue中等待Finalizer线程执行finalize方法的对象,只在linux于solars平台有效
-heap显式Java堆的详细信息,如参数配置,分代情况,哪种GC器,只在linux于solars平台有效
-histo显示堆中对象统计信息,包括类,实例的数量和合计容量
-permstat以ClassLoader为统计口径显示永久代内存状态
-F当虚拟机进程对-dump选项无效时,可以使用这个强制生成dump快照

         5.JVM  Heap Analysis Tool(Jhat)
            Jhat搭配Jmap命令使用,用于分析jmap生成的堆存储快照。jhat内置了一个微型的HTTP/HTML服务器,生成dump文件与分析结果后,可以在浏览器中查看。一般不会使用jhat分析dump文件,原因如下:1.分析耗时而且消耗硬件资源;2.jhat分析功能比较简陋,不如VisualVM,IBM HeapAnalyzer等工具
       6.Stack Trace of Java(jstack)
          用于生成虚拟机当前时刻的线程快照(一般称为threadheap或javacore文件)。线程快照是当前虚拟机内部每一条正在执行的方法堆栈的集合。生成线程快照的主要目的是定位线程出现长时间停顿的原因,如线程死锁,死循环,请求外部资源导致长时间等待。jstack命令格式:
jstack [option] vmid

选项作用
-F当正常输出请求不被响应时
-l除堆栈外,显示关于锁的附加信息
-m如果调用本地方法的话,可以显示c/c++的堆栈

 
         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值