包含診斷調優java應用的各種指令以及jvm配置示例。
檢視網絡狀況
使用top去擷取程序cpu使用率;使用/proc檔案檢視程序所占記憶體。
檢視類的一些資訊,如位元組碼的版本号、常量池等
javap -verbose classname
檢視jvm程序
jps jcmd -l
檢視程序的gc情況
jstat -gcutil [pid] (顯示總體情況) jstat -gc [pid] 1000 10(每隔1秒重新整理一次 一共10次)
檢視jvm記憶體使用狀況
jmap -heap [pid]
檢視jvm記憶體存活的對象:
jcmd [pid] GC.class_histogram jmap -histo:live [pid]
把heap裡所有對象都dump下來,無論對象是死是活
jmap -dump:format=b,file=xxx.hprof [pid]
先做一次full GC,再dump,隻包含仍然存活的對象資訊:
jcmd [PID] GC.heap_dump [FILENAME] jmap -dump:format=b,live,file=xxx.hprof [pid]
線程dump
jstack [pid] #-m參數可以列印出native棧的資訊 jcmd Thread.print kill -3 [pid]
檢視目前jvm啟動的參數
jinfo -flags [pid] #有效參數 jcmd [pid] VM.flags #所有參數
檢視對應參數的值
jinfo -flag [flagName] [pid]
啟用/禁止某個參數
jinfo -flag [+/-][flagName] [pid]
設定某個參數
jinfo -flag [flagName=value] [pid]
檢視所有可以設定的參數以及其預設值
java -XX:+PrintFlagsInitial
安裝:
<code>curl -s "https://raw.githubusercontent.com/superhj1987/awesome-scripts/master/self-installer.sh" | bash -s</code>
使用:
顯示最繁忙的java線程: -c <要顯示的線程棧數> -p <指定的Java Process>
opscipts show-busy-java-threads [-c] [-p]
使用greys跟蹤方法耗時
opscripts greys [@IP:PORT] ga?: trace [class] [method]
顯示目前cpu和記憶體使用狀況,包括全局和各個程序的。
opscripts show-cpu-and-memory
進入jvm調試互動指令行,包含對java棧、堆、線程、gc等狀态的檢視
opscripts jvm [pid]
原文出處:後端技術雜談
<a href="http://www.rowkey.me/blog/2017/03/23/java-profile-cheatsheet/" target="_blank">原文連結</a>
轉載請與作者聯系,同時請務必标明文章原始出處和原文連結及本聲明。