最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JDK常用命令jps jinfo jstat的具體說明與示例

 更新時(shí)間:2021年09月24日 17:28:24   作者:沒頭腦遇到不高興  
JDK本身提供了很多方便的JVM性能調(diào)優(yōu)監(jiān)控工具,除了集成式的VisualVM和jConsole外,還有jps、jinfo、jstat等小巧的工具,本文章希望能起拋磚引玉之用,讓大家能開始對JVM性能調(diào)優(yōu)的常用工具有所了解

概述

JDK的bin目錄下提供了很多命令工具,比如java.exe,javap.exe,javac.exe。。。。。。這些命令由jdk/lib/tools.jar類庫中提供的,是對tools.jar中的類的封裝。我們主要介紹一下JVM中處理運(yùn)行日志、異常堆棧、GC日志、線程快照(threaddump / javacore文件)、堆轉(zhuǎn)儲快照(heapdump/hprof文件)等信息的相關(guān)常用命令(jhat就不再介紹了,用的比較少,目前都是用jmap+MAT分別進(jìn)行生產(chǎn)heapdump文件的生成及分析),這些常用命令在JDK8中的官方文檔地址為https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html,打開官方文檔地址可以看到如下所示,我們所介紹的命令里面都有說明,可以對應(yīng)著看一下。

常用命令介紹: 本節(jié)先介紹前三個(gè),下面的后面進(jìn)行介紹。

名稱 主要功能
jps JVM Process Status Tool,顯示指定系統(tǒng)內(nèi)所有HotSpot虛擬機(jī)進(jìn)程
jstat JVM Statistics Minitoring Tool,用于收集HotSpot虛擬機(jī)各方面的運(yùn)行數(shù)據(jù)
jinfo Configuration Info for Java,顯示虛擬機(jī)配置信息
jmap Memory Map for Java,生成虛擬機(jī)的內(nèi)存轉(zhuǎn)儲快照(heapdump)文件
jhat JVM Heap Dump Browser,用于分析heapdump文件,它會建立一個(gè)HTTP/HTML服務(wù)器,讓用戶可以在瀏覽器上查看分析結(jié)果
jstack Stack Trace for Java,顯示虛擬機(jī)的線程快照

注意:我演示使用的是JDK1.8 

jps:虛擬機(jī)進(jìn)程狀況工具

jps(JVM Process Status Tool):可以列出正在運(yùn)行的虛擬機(jī)進(jìn)程,并顯示虛擬機(jī)執(zhí)行主類(Main Class,main()函數(shù)所在的類)的名稱,以及這些進(jìn)程的本地虛擬機(jī)的唯一ID(LVMID,Local Virtual Machine Identifier)。對于本地虛擬機(jī)進(jìn)程來說,LVMID與操作系統(tǒng)的進(jìn)程ID(PID,Process Identifier)是一致的,在Linux上使用ps命令也可以查看進(jìn)程ID(例如 ps -ef | grep java 查看Java進(jìn)程)。官方文檔地址:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jps.html

通過 jps -help 命令可以查看jps命令的使用說明

C:\Users\Administrator>jps -help
usage: jps [-help]
       jps [-q] [-mlvV] [<hostid>]
 
Definitions:
    <hostid>:      <hostname>[:<port>]

可以看到j(luò)ps命令格式:jps [option] [hostid]

jps除了查詢本地Java進(jìn)程,還可以通過RMI協(xié)議查詢開啟了RMI服務(wù)的遠(yuǎn)程虛擬機(jī)進(jìn)程狀態(tài),hostid為RMI注冊表中注冊的主機(jī)名。jps的常用選項(xiàng)如下:

選項(xiàng) 作用
-q 只輸出LVMID,省略主類的名稱
-m 輸出虛擬機(jī)進(jìn)程啟動(dòng)時(shí)傳遞給主類的main()函數(shù)的參數(shù)
-l 輸出主類的全名,如果進(jìn)程執(zhí)行的是jar包,輸出jar路徑
-v 輸出虛擬機(jī)進(jìn)程啟動(dòng)時(shí)JVM參數(shù)

使用示例:

C:\Users\Administrator>jps -l
13120 sun.tools.jps.Jps
11332
14284 com.wkp.demo.ServiceapiApplication
6908
6924

 jinfo:Java配置信息工具

jinfo(Configuration Info for Java)的作用是實(shí)時(shí)地查看和調(diào)整虛擬機(jī)的各項(xiàng)參數(shù)。官方文檔地址為:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jinfo.html

通過 jinfo -help 命令可以查看jinfo命令的使用信息:其使用格式為 jinfo [option] pid

C:\Users\Administrator>jinfo -help
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

jinfo命令選項(xiàng)介紹:

選項(xiàng) 作用
-flag 查看JVM參數(shù)選項(xiàng)值(如果沒有設(shè)置過會打印默認(rèn)值,使用java -XX:+PrintFlagsFinal也可以查看參數(shù)默認(rèn)值)
-flag [+|-]<name> 程序運(yùn)行時(shí)啟用/禁用JVM的Boolean類型參數(shù)選項(xiàng)
-flag <name>=<value 程序運(yùn)行時(shí)設(shè)置JVM的非Boolean類型參數(shù)選項(xiàng)值
-flags 打印設(shè)置的JVM參數(shù)選項(xiàng)
-sysprops 把虛擬機(jī)進(jìn)程的System.getProperties()的內(nèi)容打印出來
 <no option>  不寫option的話會打印上面的所有信息

使用示例:

C:\Users\Administrator>jinfo -flag MaxHeapSize 14284
-XX:MaxHeapSize=67108864
C:\Users\Administrator>jinfo -flags 14284
Attaching to process ID 14284, please wait...
Debugger attached successfully.
Server compiler detected.
JVM version is 25.112-b15
Non-default VM flags: -XX:CICompilerCount=3 -XX:InitialHeapSize=8388608 -XX:+ManagementServer -XX:MaxHeapSize=67108864 -XX:MaxNewSize=22347776 -XX:MaxTenuringThreshold=6 -XX:MinHeapDeltaBytes=196608 -
XX:NewSize=2752512 -XX:OldPLABSize=16 -XX:OldSize=5636096 -XX:+PrintCommandLineFlags -XX:+PrintFlagsFinal -XX:+PrintGC -XX:+PrintGCApplicationStoppedTime -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX
:+PrintHeapAtGC -XX:+UseCompressedClassPointers -XX:+UseCompressedOops -XX:+UseConcMarkSweepGC -XX:+UseFastUnorderedTimeStamps -XX:-UseLargePagesIndividualAllocation -XX:+UseParNewGC
Command line:  -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=63038 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Dspring.liveBeansVie
w.mbeanDomain -Dspring.application.admin.enabled=true -Xms8m -Xmx64m -verbose:gc -Xloggc:D:\workspaces\hgwd-Wp\logs\hgwd-usercenter\gc.log -XX:+PrintHeapAtGC -XX:+PrintGCApplicationStoppedTime -XX:+Pr
intGCTimeStamps -XX:+PrintCommandLineFlags -XX:+PrintFlagsFinal -XX:+PrintGCDetails -XX:+UseConcMarkSweepGC -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -
Dcom.sun.management.jmxremote.port=9004 -Djava.rmi.server.hostname=127.0.0.1 -Dfile.encoding=UTF-8

 jstat:虛擬機(jī)統(tǒng)計(jì)信息監(jiān)控工具

jstat(JVM Statistics Monitoring Tool)是用于監(jiān)控虛擬機(jī)各種運(yùn)行狀態(tài)信息的命令行工具。它可以顯示本地或遠(yuǎn)程虛擬機(jī)(需要遠(yuǎn)程主機(jī)提供RMI支持)進(jìn)程中的類裝載、內(nèi)存、垃圾收集、JIT編譯等運(yùn)行數(shù)據(jù),在沒有GUI圖像界面,只提高了純文本控制臺環(huán)境的服務(wù)器上,它將是運(yùn)行期定位虛擬機(jī)性能問題的首選工具。官方文檔地址為:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/jstat.html

使用jstat -help可以查看使用幫助

C:\Users\Administrator>jstat -help
Usage: jstat -help|-options
       jstat -<option> [-t] [-h<lines>] <vmid> [<interval> [<count>]]
 
Definitions:
  <option>      An option reported by the -options option
  <vmid>        Virtual Machine Identifier. A vmid takes the following form:
                     <lvmid>[@<hostname>[:<port>]]
                Where <lvmid> is the local vm identifier for the target
                Java virtual machine, typically a process id; <hostname> is
                the name of the host running the target Java virtual machine;
                and <port> is the port number for the rmiregistry on the
                target host. See the jvmstat documentation for a more complete
                description of the Virtual Machine Identifier.
  <lines>       Number of samples between header lines.
  <interval>    Sampling interval. The following forms are allowed:
                    <n>["ms"|"s"]
                Where <n> is an integer and the suffix specifies the units as
                milliseconds("ms") or seconds("s"). The default units are "ms".
  <count>       Number of samples to take before terminating.
  -J<flag>      Pass <flag> directly to the runtime system.

使用jstat -options可以查看jstat支持的option 

C:\Users\Administrator>jstat -options
-class
-compiler
-gc
-gccapacity
-gccause
-gcmetacapacity
-gcnew
-gcnewcapacity
-gcold
-gcoldcapacity
-gcutil
-printcompilation

 選項(xiàng)option代表這用戶希望查詢的虛擬機(jī)信息,主要分為3類:類裝載、垃圾收集和運(yùn)行期編譯狀況,具體選項(xiàng)及租用參見下表:

選項(xiàng) 作用
-class 監(jiān)視類裝載、卸載數(shù)量、總空間及類裝載所耗費(fèi)的時(shí)間
-gc 監(jiān)視Java堆狀況,包括Eden區(qū)、2個(gè)Survivor區(qū)、老年代、永久代等的容量
-gccapacity 監(jiān)視內(nèi)容與-gc基本相同,但輸出主要關(guān)注Java堆各個(gè)區(qū)域使用到的最大和最小空間
-gcutil 監(jiān)視內(nèi)容與-gc基本相同,但輸出主要關(guān)注已使用空間占總空間的百分比
-gccause 與-gcutil功能一樣,但是會額外輸出導(dǎo)致上一次GC產(chǎn)生的原因
-gcnew 監(jiān)視新生代GC的狀況
-gcnewcapacity 監(jiān)視內(nèi)容與-gcnew基本相同,輸出主要關(guān)注使用到的最大和最小空間
-gcold 監(jiān)視老年代GC的狀況
-gcoldcapacity 監(jiān)視內(nèi)容與——gcold基本相同,輸出主要關(guān)注使用到的最大和最小空間
-gcpermcapacity 輸出永久代使用到的最大和最小空間
-compiler 輸出JIT編譯器編譯過的方法、耗時(shí)等信息
-printcompilation 輸出已經(jīng)被JIT編譯的方法

其實(shí)每個(gè)option的輸出內(nèi)容,官方文檔中都有介紹,這里就不把每一個(gè)命令都演示一遍了,感興趣的話可以自己試一下,對照著官方文檔還是很好理解的。

 jstat命令格式:jstat [option vmid [interval[s|ms] [count]] ]

對于命令格式中的VMID與LVMID需要特別說明下:如果是本地虛擬機(jī)進(jìn)程,VMID和LVMID是一致的,如果是遠(yuǎn)程虛擬機(jī)進(jìn)程,那VMID的格式應(yīng)當(dāng)是:[protocol:][//] lvmid [@hostname[:port]/servername]

參數(shù)interval和count代表查詢間隔和次數(shù),如果省略這兩個(gè)參數(shù),說明只查詢一次。假設(shè)需要每1000毫秒查詢一次進(jìn)程14284垃圾收集狀況,一共查詢5次,那命令行如下:jstat -gc 14284 1000 5

C:\Users\Administrator>jstat -gc 14284 1000 5
 S0C    S1C    S0U    S1U      EC       EU        OC         OU       MC     MU      CCSC   CCSU     YGC    YGCT  FGC      FGCT     GCT
2176.0 2176.0  0.0   2176.0 17472.0   673.2    43712.0    34800.8   69760.0 66724.9 9088.0 8479.0    620    1.201  57      1.850    3.051
2176.0 2176.0  0.0   2176.0 17472.0   673.2    43712.0    34800.8   69760.0 66724.9 9088.0 8479.0    620    1.201  57      1.850    3.051
2176.0 2176.0  0.0   2176.0 17472.0   673.2    43712.0    34800.8   69760.0 66724.9 9088.0 8479.0    620    1.201  57      1.850    3.051
2176.0 2176.0  0.0   2176.0 17472.0   673.2    43712.0    34800.8   69760.0 66724.9 9088.0 8479.0    620    1.201  57      1.850    3.051
2176.0 2176.0  0.0   2176.0 17472.0   673.2    43712.0    34800.8   69760.0 66724.9 9088.0 8479.0    620    1.201  57      1.850    3.051

 通過上面的option表得知-gc用于監(jiān)視Java堆狀況,包括Eden區(qū)、2個(gè)Survivor區(qū)、老年代、永久代等的容量,我們對上面的打印做下簡單介紹:

  • S0C和S1C表示S0和S1的可用空間都是2176.0KB(注意這里的單位是KB);
  • S0U的值表示S0區(qū)域是空的沒有被占用;S1U的值是2176.0KB,說明S1被占滿了;
  • EC表示Eden區(qū)域的容量是17472.0KB,EU表示Eden區(qū)使用了673.2KB;
  • OC和OU分別表示堆內(nèi)存中的Old區(qū)的容量及使用大??;
  • MC和MU分別表示方法區(qū)(JDK1.8元空間)的容量及使用大小;
  • CCSC和CCSU分別表示壓縮類空間的容量及使用大??;
  • YGC:年輕代垃圾回收次數(shù)
  • YGCT:年輕代垃圾回收消耗時(shí)間
  • FGC:老年代垃圾回收(FullGC)次數(shù)
  • FGCT:老年代垃圾回收(FullGC)消耗時(shí)間
  • GCT:垃圾回收消耗總時(shí)間(等于YGCT+FGCT)

下面再演示下:jstat -gcutil 14284 1000 5

C:\Users\Administrator>jstat -gcutil 14284 1000 5
  S0     S1      E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT
  0.00 100.00   7.31  79.61  95.65  93.30    620    1.201    57    1.850    3.051
  0.00 100.00   7.31  79.61  95.65  93.30    620    1.201    57    1.850    3.051
  0.00 100.00   7.31  79.61  95.65  93.30    620    1.201    57    1.850    3.051
  0.00 100.00   7.31  79.61  95.65  93.30    620    1.201    57    1.850    3.051
  0.00 100.00   7.31  79.61  95.65  93.30    620    1.201    57    1.850    3.051

 關(guān)于GC時(shí)間的上面已經(jīng)介紹了,可以結(jié)合上面的jstat -gc看一下:

  • S0:S0區(qū)當(dāng)前使用比例為0.00%,也就是空的
  • S1:S1區(qū)當(dāng)前使用比例100.00%,已經(jīng)滿了
  • E:Eden區(qū)使用比例7.31%
  • O:老年代使用比例79.61%
  • M:元空間使用比例95.65%
  • CCS:壓縮類空間使用比例93.30%

本節(jié)就先介紹到這里,下節(jié)會介紹jmap+MAT實(shí)戰(zhàn)堆內(nèi)存溢出分析

到此這篇關(guān)于JDK常用命令jps jinfo jstat的具體說明與示例的文章就介紹到這了,更多相關(guān)JDK 常用命令 內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java Enum的簡單使用

    Java Enum的簡單使用

    這篇文章主要為大家詳細(xì)介紹了Java Enum的簡單使用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • 了解SpringMVC的上傳和下載

    了解SpringMVC的上傳和下載

    今天小編就為大家分享一篇關(guān)于Spring整合Springmvc的相關(guān)介紹,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2021-07-07
  • JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)原理解析

    JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)原理解析

    這篇文章主要介紹了JVM運(yùn)行時(shí)數(shù)據(jù)區(qū)原理解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-08-08
  • Mybatis使用foreach批量更新數(shù)據(jù)報(bào)無效字符錯(cuò)誤問題

    Mybatis使用foreach批量更新數(shù)據(jù)報(bào)無效字符錯(cuò)誤問題

    這篇文章主要介紹了Mybatis使用foreach批量更新數(shù)據(jù)報(bào)無效字符錯(cuò)誤問題,具有很好的參考價(jià)值,希望對大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • SpringBoot攔截器使用精講

    SpringBoot攔截器使用精講

    攔截器可以根據(jù) URL 對請求進(jìn)行攔截,主要應(yīng)用于登陸校驗(yàn)、權(quán)限驗(yàn)證、亂碼解決、性能監(jiān)控和異常處理等功能上。SpringBoot同樣提供了攔截器功能。 本文將為大家詳細(xì)介紹一下
    2021-12-12
  • SpringBoot Security實(shí)現(xiàn)單點(diǎn)登出并清除所有token

    SpringBoot Security實(shí)現(xiàn)單點(diǎn)登出并清除所有token

    Spring Security是一個(gè)功能強(qiáng)大且高度可定制的身份驗(yàn)證和訪問控制框架。提供了完善的認(rèn)證機(jī)制和方法級的授權(quán)功能。是一款非常優(yōu)秀的權(quán)限管理框架。它的核心是一組過濾器鏈,不同的功能經(jīng)由不同的過濾器
    2023-01-01
  • 為什么Spring和IDEA都不推薦使用 @Autowired 注解

    為什么Spring和IDEA都不推薦使用 @Autowired 注解

    本文主要介紹了為什么Spring和IDEA都不推薦使用 @Autowired 注解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-04-04
  • Java8新的異步編程方式CompletableFuture實(shí)現(xiàn)

    Java8新的異步編程方式CompletableFuture實(shí)現(xiàn)

    這篇文章主要介紹了Java8新的異步編程方式CompletableFuture實(shí)現(xiàn),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04
  • java實(shí)現(xiàn)簡單五子棋小游戲(2)

    java實(shí)現(xiàn)簡單五子棋小游戲(2)

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡單五子棋小游戲的第二部分,添加游戲結(jié)束條件,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-01-01
  • Java實(shí)現(xiàn)注冊郵箱激活賬戶實(shí)例代碼

    Java實(shí)現(xiàn)注冊郵箱激活賬戶實(shí)例代碼

    本篇文章主要介紹了Java實(shí)現(xiàn)郵箱激活賬戶實(shí)例代碼,這里整理了詳細(xì)的代碼,具有一定的參考價(jià)值,有需要的小伙伴可以參考下。
    2017-07-07

最新評論

大竹县| 四川省| 唐海县| 龙泉市| 介休市| 安乡县| 桃园县| 巍山| 永登县| 贡觉县| 龙岩市| 阿鲁科尔沁旗| 鄂温| 嵩明县| 尚志市| 当阳市| 兴义市| 阜新| 英吉沙县| 泰安市| 乐东| 南京市| 中牟县| 疏附县| 和龙市| 老河口市| 桓台县| 张家口市| 西和县| 方城县| 赣州市| 娄底市| 寻甸| 竹北市| 舞阳县| 正镶白旗| 芦山县| 张家川| 余干县| 阜新| 南城县|