zoukankan      html  css  js  c++  java
  • 《深入理解Java虚拟机》笔记--第四章、虚拟机性能监控与故障处理工具

    主要学习并记录在命令行中操作服务器时使用的六大命令工具,可视化工具JConsole和VisualVM在开发过程中熟悉。
    一、jps:虚拟机进程状况工具(JVM Process Status Tool)
        列出正在运行的虚拟机进程,并显示虚拟机执行主类的名称和这些进程的本地虚拟机唯一ID(LVMID)。
        快速定位到某个虚拟机进程。
        jps命令格式:
            jps [options] [hostid]
        Options:
            -q    只输出LVMID,省略主类的名称;
            -m    输出虚拟机进程启动时传递给主类Main()函数的参数;
            -l    输出主类的全名,如果进程执行的是jar包,输出jar路径;
            -v    输出虚拟机进程启动时JVM参数;
        HostId:
            通过RMI协议查询开启了RMI服务的远程虚拟机进程状态。
            jps 192.168.8.7 //查看远程计算机192.168.8.7的情况(默认1099端口)
            jps rmi://192.168.8.7:8888 //查看远程计算机192.168.8.7 8888端口 
     
    二、jstat:虚拟机统计信息监视工具(JVM Statistics Monitoring Tool)
        监视虚拟机各种运行状态信息,显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据。
        jstat命令格式:
            jstat [option vmid [ interval [s|ms] [count] ] ]
        Options:
            -class    监视类装载、卸载数量、总空间及类装载所耗费的时间;
            -gc    监视Java堆状态,包括Eden区(E)、2个Survivor区(S0,S1)、老年代(O)、永久代(P)等的容量、已用空间、GC时间合计等信息;
            -gccapacity    监视内容与-gc基本相同,但输出主要关注Java堆各个区域使用到的最大和最小空间;
            -gcutil     监视内容与-gc基本相同,但输出主要关注已使用空间占总空间的百分比;
            -gccause    与-gcutil功能一样,但是会额外输出导致上一次gc产生的原因;
            -gcnew    监视新生代gc的状况;
            -gcnewcapacity    监视内容与-gcnew基本相同,输出主要关注使用到的最大和最小空间;
            -gcold    监视老年代gc的状况;
            -gcoldcapacity    监视内容与-gcold基本相同,输出主要关注使用到的最大和最小空间;
            -gcpermcapacity    输出永久代使用到的最大和最小空间;
            -compiler    输出JIT编译器编译过的方法、耗时等信息;
            -printcompilation    输出已经被JIT编译的方法;
     
    三、jinfo:Java配置信息工具(Configuration Info for Java)
        实时查看和调整虚拟机的各项参数。
        使用-flag [+/-]name或 -flag name=value修改一部分运行时可写的虚拟机参数。
        jinfo命令格式:
            jinfo [option] pid
        Options:
            -flag name    输出指定name的JVM参数;
            -flag [+|-]name    启用或禁用指定name的JVM参数;
            -flag name=value    设置指定name的JVM参数;
            -flags    打印传递给JVM命令行标志;
            -sysprops    打印Java系统属性键值对;
    四、jmap:Java内存映像工具(Memory Map for Java)
        可用于生成堆转储快照,查询finalize执行队列,Java堆和永久代的详细信息等。
        jmap命令格式:
            jmap [option] vmid
        Options:
            -dump    生成Java堆转储快照;
            -finalizerinfo    显示在F-Queue中等待Finalizer线程执行finalize方法的对象;
            -heap    显示Java堆详细信息,如使用哪种回收器、参数配置、分代状况等;
            -histo    显示堆中对象统计信息,包括类、实例数量和合计容量;
            -permstat    以ClassLoader为统计口径显示永久代内存状态;
            -F    当虚拟机进程对-dump选项没有响应时,可以使用这个选项强制生成dump快照;
    五、jhat:虚拟机堆转储快照分析工具(JVM Heap Analysis Tool)
        与jmap命令搭配使用,来分析堆转储快照。
        如非必要,不要生产环境分析堆转储快照,建议将dump文件拷贝出来使用Eclipse Memory Analysis(mat)工具分析。
        jhat命令格式:
            jhat [ options ] <heap-dump-file>
    六、jstack:Java堆栈跟踪工具(Stack Trace for Java)
        用于生成虚拟机当前时刻的线程快照,定位线程出现长时间停顿的原因。
        jstack命令格式:
            jstack [option] vmid
        Options:
            -F    当正常输出的请求不被响应时,强制输出线程堆栈;
            -l    除堆栈外,显示关于锁的附加信息;
            -m    如果调用到本地方法的话,可以显示C/C++的堆栈;
    小结:这六大命令在排查线上问题时很有用,不用死记硬背,平时用的时候,用man命令可获取命令说明,如果能记住并熟练的使用,可以提高排查问题的效率,故在这里手动的敲一遍,加深印象。
  • 相关阅读:
    2017.3.11[bzoj2440][中山市选2011]完全平方数
    2017.3.6[hihocoder#1415]后缀数组三·重复旋律3
    2017.3.4[hihocoder#1407]后缀数组二·重复旋律2
    [NOI2013]快餐店
    [HNOI2014]米特运输
    [HNOI2015]亚瑟王
    [JLOI2013]卡牌游戏
    [SDOI2010]地精部落
    [ZJOI2007]棋盘制作
    [AHOI2009]中国象棋
  • 原文地址:https://www.cnblogs.com/baronzhao/p/3205183.html
Copyright © 2011-2022 走看看