天天看點

JVM診斷調優CheatSheet

包含診斷調優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 &lt;要顯示的線程棧數&gt; -p &lt;指定的Java Process&gt;

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>

轉載請與作者聯系,同時請務必标明文章原始出處和原文連結及本聲明。