zoukankan      html  css  js  c++  java
  • 《深入理解Java虚拟机》(四) 调优工具、指令

    JVM 调优的概念

    调优的前提是发现问题,然后通过工具定位问题并实地分析问题,最后根据问题现象选用最合适的策略优化 / 解决 问题;JVM调优的工具很多,有jdk自带的工具,例如:jvisualvm、jconsole;也有第三方的:eclipse附带的内存分析工具MAT、专业分析gc日志的工具——GChisto等。本文主要针对如下jdk自动工具进行介绍。

    jps

    jps 的作用是列出系统中正在运行的虚拟机线程
    命令格式:

    jps  [ options ]  [ hostid ]
    

    1.options 功能选项

    可单个,也可多个:

    • jps -l : 输出主类全名或jar路径
      在这里插入图片描述
      一般情况下用到最多的是 jps -l 查看应用的pid

    • jps -q : 只输出LVMID
      在这里插入图片描述

    • jps -m : 输出JVM启动时传递给main()的参数
      在这里插入图片描述

    • jps -v : 输出JVM启动时显示指定的JVM参数

    • jps -l -m
      在这里插入图片描述

    2.hostid

    hostid 是RMI注册表中,注册的主机名(很少用到略过)。

    jstat

    虚拟机统计信息监视工具
    jstat 命令格式

    	jstat  [ [ option ]  vmid  [ interval [s | ms] ] [ count ] ]
    

    参数说明:

    1.vmid格式

    如果是本地虚拟机进程,那么它与lvmid一致,如果是远程虚拟机线程格式如下:

    	[protocol:][//]lvmid[@hostname[:port]/servername]
    

    2.interval 和 count

    interval 和 count 代表查询间隔时间和查询次数,如果不进行指定则默认查询一次,如下指令查询虚拟机进程15196,每隔 500毫秒打印一次共计5次;
    在这里插入图片描述

    3.option

    option 是监视选项

    • -class class loader的行为统计
      在这里插入图片描述
      共计装载7478个类,总空间13498.5 Byte ; 卸载1个类,总空间... ;Time代表耗时

    • -compiler 输出编译器编译过的方法、耗时....
      在这里插入图片描述

    • -gc 垃圾回收堆的行为统计
      在这里插入图片描述
      C--总容量,U--已使用的容量

        	S0C : survivor0区的总容量
        	S1C : survivor1区的总容量
        	S0U : survivor0区已使用的容量
        	S1C : survivor1区已使用的容量
        	EC : Eden区的总容量
        	EU : Eden区已使用的容量
        	OC : Old区的总容量
        	OU : Old区已使用的容量
        	MC : Metaspace 容量
        	MC : Metaspace 已用
        	YGC : 新生代垃圾回收次数
        	YGCT : 新生代垃圾回收时间
        	FGC : 老年代垃圾回收次数
        	FGCT : 老年代垃圾回收时间
        	GCT : 垃圾回收总消耗时间
      
    • -gccapacity 输出各个堆区域使用到的最大、最小空间
      在这里插入图片描述

        NGCMN :   新生代占用的最小空间
        NGCMX :   新生代占用的最大空间
        OGCMN :  老年代占用的最小空间
        OGCMX :  老年代占用的最大空间
        OGC:     当前年老代的容量 (KB)
        OC:        当前年老代的空间 (KB)
      
    • -gcutil 输出内容类似jstat -gc , -gcutil 是按照百分比输出的
      在这里插入图片描述
      S0、S1 占用为空,Eden 占用 52.18%,old--8%,Metaspace 95.25%......;young gc 5次共耗时0.027,Full GC 2次 共耗时 0.067。

    • -gccause 同-gcutil,还会输出最近两次垃圾回收事件的原因
      在这里插入图片描述

    • -gcnew 新生代行为统计
      在这里插入图片描述

        TT:Tenuring threshold(提升阈值)
        MTT:最大的tenuring threshold
        DSS:survivor区域大小 (KB)
      
    • -gcnewcapacity 同 -gcnew 但是它关注的是新生代各区域的边界
      在这里插入图片描述

    • -gcold 年老代和永生代行为统计
      在这里插入图片描述

    • -gcoldcapacity 同 -gcold 它关注的是边界
      gcoldcapacity

    jinfo

    jinfo可以实时查看和调整虚拟机参数,指令格式如下:

    	jinfo  [ option ] pid 
    		
    		-flag : 输出指定args参数的值
    		-flags : 不需要args参数,输出所有JVM参数的值
    		-sysprops : 输出系统属性,等同于System.getProperties()
    

    例如,查看进程 15196 的所有参数:

    jinfo -flags 15196
    

    在这里插入图片描述

    jmap

    jmap 是内存映射工具,用于生成堆转储快照,命令格式如下:

    jmap [ option ] vmid 
    
    • dump : 生成堆转储快照

        jmap -dump:live,format=b,file=D:\\DUMP_FILES\\dump.hprof 15196
      

    在这里插入图片描述

    • finalizerinfo : 显示在F-Queue队列等待Finalizer线程执行finalizer方法的对象

    • heap : 显示Java堆详细信息
      在这里插入图片描述

    • histo : 显示堆中对象的统计信息
      在这里插入图片描述

    • permstat : to print permanent generation statistics

    • F : 当-dump没有响应时,强制生成dump快照

    jhat

    jhat配合jmap使用,它可以分析jmap生成的dump快照

    	jhat -J-Xmx512m D:\\DUMP_FILES\\dump.hprof
    

    在这里插入图片描述
    在这里插入图片描述

    jstack

    生成堆线程快照

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

    在这里插入图片描述
    在这里插入图片描述

    jvisualvm

    jvisualvm是图形化工具
    在这里插入图片描述

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    Azkaban的架构(三)
    Azkaban的功能特点(二)
    Hadoop工作流不足(六)
    Hadoop工作流--JobControl(五)
    ruby on rails创建的页面訪问很慢
    C#实现树的双亲表示法
    SetCapture ReleaseCapture
    HDU 4923 Room and Moor
    Spring概述
    WinMM.dll 函数汇总
  • 原文地址:https://www.cnblogs.com/bokers/p/14903022.html
Copyright © 2011-2022 走看看