Jvm自帶監控命令實戰[base jdk8]

FeelTouch發表於2018-02-11
#示指定系統內所有的HotSpot虛擬機器程式
jps -ml

#用於生成heap dump檔案
#還可以使用-XX:+HeapDumpOnOutOfMemoryError引數來讓虛擬機器出現OOM的時候自動生成dump檔案。
#jmap不僅能生成dump檔案,還可以查詢finalize執行佇列、Java堆和永久代的詳細資訊,如當前使用率、當前使用的是哪種收集器等
jmap -histo 764 > online-server_histo.log
jmap -histo:live 764 > online-server_histo:live.log
jmap -dump:live,format=b,file=online-server_dump:live.log 764
jmap -heap 764 > online-server_heap.log
jmap -permstat 764
jmap -clstats 764

#與jmap搭配使用,用來分析jmap生成的dump,jhat內建了一個微型的HTTP/HTML伺服器,生成dump的分析結果後,
#可以在瀏覽器中檢視。在此要注意,一般不會直接在伺服器上進行分析,因為jhat是一個耗時並且耗費硬體資源的過程,
#一般把伺服器生成的dump檔案複製到本地或其他機器上進行通過MAT活其他軟體分析。
jhat -J-Xmx512m dump.hprof

#反編譯位元組碼檔案成可讀指令
javap -s java.lang.String

#用於生成java虛擬機器當前時刻的執行緒快照。執行緒快照是當前java虛擬機器內每一條執行緒正在執行的方法堆疊的集合,
#生成執行緒快照的主要目的是定位執行緒出現長時間停頓的原因,如執行緒間死鎖、死迴圈、請求外部資源導致的長時間等待等。
#執行緒出現停頓的時候通過jstack來檢視各個執行緒的呼叫堆疊,就可以知道沒有響應的執行緒到底在後臺做什麼事情,或者等待什麼資源。
#如果java程式崩潰生成core檔案,jstack工具可以用來獲得core檔案的java stack和native stack的資訊,從而可以輕鬆地知道java程式是如何崩潰和在程式何處發生問題。
#另外,jstack工具還可以附屬到正在執行的java程式中,看到當時執行的java程式的java stack和native stack的資訊, 如果現在執行的java程式呈現hung的狀態,jstack是非常有用的
jstack -l 764 > online-server_jstack_l.log

#用於監視虛擬機器執行時狀態資訊的命令,它可以顯示出虛擬機器程式中的類裝載、記憶體、垃圾收集、JIT編譯等執行資料
jstat -gcutil 764 1000 10 > online-server_jstat_1000_10.log
jstat -gccapacity 764 1000 30 > online-server_gccapacity_1000_30.log
jstat -gc 764 1000 30 > online-server_gc_1000_30.log
jstat -class 764 > online-server_jstat_class.log
jstat -compiler 764 > online-server_jstat_compiler.log

#作用是實時檢視和調整虛擬機器執行引數
jinfo -sysprops 764 > online-server_jinfo_sysprops.log
jinfo -flags 764 > online-server_jinfo_flags.log

#檢視可以在不重啟jvm程式的情況下,可以動態設定的jvm引數
java -XX:+PrintFlagsFinal -version|grep manageable > jvm_manageable.log

相關文章