JVM - 調(diào)優(yōu)命令

JVM - 調(diào)優(yōu)命令

jps

顯示指定系統(tǒng)內(nèi)所有jvm進(jìn)程信息
命令格式:jps [options] [hostid]
option參數(shù)

  • -l:輸出主類全名或jar路徑
  • -q:只輸出進(jìn)程ID
  • -m:輸出啟動JVM時傳遞給main函數(shù)的參數(shù)
  • -v:輸出JVM啟動時顯示指定的JVM參數(shù)

jstat

用戶監(jiān)視JVM運(yùn)行時狀態(tài)信息的命令,可以顯示出JVM的類加載、內(nèi)存、垃圾收集、JIT編譯等運(yùn)行數(shù)據(jù)。
命令格式:jstat [option] 進(jìn)程ID [interval] [count]
參數(shù)描述

  • [option] : 操作參數(shù)
  • [interval] : 連續(xù)輸出的時間間隔
  • [count] : 連續(xù)輸出的次數(shù)
    option 參數(shù)
  • -class:監(jiān)視類裝載、卸載數(shù)量、總空間以及耗費的時間
  • -compiler:輸出JIT編譯過的方法數(shù)量耗時等
  • -gc:垃圾回收堆的行為統(tǒng)計; jstat -gc 1262 2000 20 ;每隔2000ms輸出1262的gc情況,一共輸出20次。
S0C : survivor0區(qū)的總?cè)萘?S1C : survivor1區(qū)的總?cè)萘?S0U : survivor0區(qū)已使用的容量
S1C : survivor1區(qū)已使用的容量
EC : Eden區(qū)的總?cè)萘?EU : Eden區(qū)已使用的容量
OC : Old區(qū)的總?cè)萘?OU : Old區(qū)已使用的容量
PC 當(dāng)前perm的容量 (KB)
PU perm的使用 (KB)
YGC : 新生代垃圾回收次數(shù)
YGCT : 新生代垃圾回收時間
FGC : 老年代垃圾回收次數(shù)
FGCT : 老年代垃圾回收時間
GCT : 垃圾回收總消耗時間
  • -gccapacity:同-gc,不過還會輸出Java堆各區(qū)域使用到的最大、最小空間

  • -gcutil:同-gc,不過輸出的是使用空間占總空間的百分比

  • -gccause:同-gcutil,附加最近兩次垃圾回收事件的原因
    LGCC:最近垃圾回收的原因
    GCC:當(dāng)前垃圾回收的原因

  • -gcnew:統(tǒng)計新生代的行為
    TT:提升閾值,MTT:最大提升閾值,DSS:survivor區(qū)域大小

  • -gcnewcapacity:新生代與其相應(yīng)的內(nèi)存空間的統(tǒng)計

  • -gcold:統(tǒng)計老年代的行為

  • -gcoldcapacity:統(tǒng)計老年代的大小和空間

  • -gcpermcaoacuty:統(tǒng)計持久代的行為

  • -printcomplation jit編譯方法統(tǒng)計
    Compiled:被執(zhí)行的編譯任務(wù)的數(shù)量
    Size:方法字節(jié)碼的字節(jié)數(shù)
    Type:編譯類型
    Method:編譯方法的類名和方法名。類名使用"/" 代替 "." 作為空間分隔符. 方法名是 給出類的方法名. 格式是一致于HotSpot - XX:+PrintComplation 選項

    jmap

    jmap(JVM Memory Map)命令用于生成heap dump文件,如果不使用這個命令,還闊以使用-XX:+HeapDumpOnOutOfMemoryError參數(shù)來讓虛擬機(jī)出現(xiàn)OOM的時候·自動生成dump文件。 jmap不僅能生成dump文件,還闊以查詢finalize執(zhí)行隊列、Java堆和永久代的詳細(xì)信息,如當(dāng)前使用率、當(dāng)前使用的是哪種收集器等。
    命令格式:jmap [option] 進(jìn)程ID
    option參數(shù)
    dump : 生成堆轉(zhuǎn)儲快照
    finalizerinfo : 顯示在F-Queue隊列等待Finalizer線程執(zhí)行finalizer方法的對象
    heap : 顯示Java堆概要信息,GC使用的算法,heap的配置及wise heap的使用情況
    histo : 打印堆的對象統(tǒng)計,包括對象數(shù)、內(nèi)存大小等等 (因為在dump:live前會進(jìn)行full gc,如果帶上live則只統(tǒng)計活對象,因此不加live的堆大小要大于加live堆的大小 )
    permstat : 打印Java堆內(nèi)存的永久保存區(qū)域的類加載器的智能統(tǒng)計信息。對于每個類加載器而言,它的名稱、活躍度、地址、父類加載器、它所加載的類的數(shù)量和大小都會被打印。此外,包含的字符串?dāng)?shù)量和大小也會被打印
    F : 當(dāng)-dump沒有響應(yīng)時,強(qiáng)制生成dump快照

jhat

jhat(JVM Heap Analysis Tool)命令是與jmap搭配使用,用來分析jmap生成的dump,jhat內(nèi)置了一個微型的HTTP/HTML服務(wù)器,生成dump的分析結(jié)果后,可以在瀏覽器中查看。在此要注意,一般不會直接在服務(wù)器上進(jìn)行分析,因為jhat是一個耗時并且耗費硬件資源的過程,一般把服務(wù)器生成的dump文件復(fù)制到本地或其他機(jī)器上進(jìn)行分析。
命令格式:jhat [dumpfile]

jstack

jstack用于生成java虛擬機(jī)當(dāng)前時刻的線程快照。線程快照是當(dāng)前java虛擬機(jī)內(nèi)每一條線程正在執(zhí)行的方法堆棧的集合,生成線程快照的主要目的是定位線程出現(xiàn)長時間停頓的原因,如線程間死鎖、死循環(huán)、請求外部資源導(dǎo)致的長時間等待等。 線程出現(xiàn)停頓的時候通過jstack來查看各個線程的調(diào)用堆棧,就可以知道沒有響應(yīng)的線程到底在后臺做什么事情,或者等待什么資源。 如果java程序崩潰生成core文件,jstack工具可以用來獲得core文件的java stack和native stack的信息,從而可以輕松地知道java程序是如何崩潰和在程序何處發(fā)生問題。另外,jstack工具還可以附屬到正在運(yùn)行的java程序中,看到當(dāng)時運(yùn)行的java程序的java stack和native stack的信息, 如果現(xiàn)在運(yùn)行的java程序呈現(xiàn)hung的狀態(tài),jstack是非常有用的。
命令格式:jstack [option] 進(jìn)程ID
option參數(shù)
-F : 當(dāng)正常輸出請求不被響應(yīng)時,強(qiáng)制輸出線程堆棧
-l : 除堆棧外,顯示關(guān)于鎖的附加信息
-m : 如果調(diào)用到本地方法的話,可以顯示C/C++的堆棧

jinfo

jinfo(JVM Configuration info)這個命令作用是實時查看和調(diào)整虛擬機(jī)運(yùn)行參數(shù)。 之前的jps -v口令只能查看到顯示指定的參數(shù),如果想要查看未被顯示指定的參數(shù)的值就要使用jinfo口令
命令格式:jinfo [option] [args] 進(jìn)程ID
option參數(shù)
-flag : 輸出指定args參數(shù)的值
-flags : 不需要args參數(shù),輸出所有JVM參數(shù)的值
-sysprops : 輸出系統(tǒng)屬性,等同于System.getProperties()

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容